123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /**
- * Copyright (C) 2016 CSI Project. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #ifndef _CSI_ETH_PHY_H_
- #define _CSI_ETH_PHY_H_
- #include "drv_eth.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef void *eth_phy_handle_t;
- #define CSI_ETH_PHY_API_VERSION CSI_ETH_VERSION_MAJOR_MINOR(2,1) /* API version */
- #define _CSI_Driver_ETH_PHY_(n) Driver_ETH_PHY##n
- #define CSI_Driver_ETH_PHY_(n) _CSI_Driver_ETH_PHY_(n)
- /****** Ethernet PHY Mode *****/
- #define CSI_ETH_PHY_SPEED_Pos 0
- #define CSI_ETH_PHY_SPEED_Msk (3UL << CSI_ETH_PHY_SPEED_Pos)
- #define CSI_ETH_PHY_SPEED_10M (CSI_ETH_SPEED_10M << CSI_ETH_PHY_SPEED_Pos) ///< 10 Mbps link speed
- #define CSI_ETH_PHY_SPEED_100M (CSI_ETH_SPEED_100M << CSI_ETH_PHY_SPEED_Pos) ///< 100 Mbps link speed
- #define CSI_ETH_PHY_SPEED_1G (CSI_ETH_SPEED_1G << CSI_ETH_PHY_SPEED_Pos) ///< 1 Gpbs link speed
- #define CSI_ETH_PHY_DUPLEX_Pos 2
- #define CSI_ETH_PHY_DUPLEX_Msk (1UL << CSI_ETH_PHY_DUPLEX_Pos)
- #define CSI_ETH_PHY_DUPLEX_HALF (CSI_ETH_DUPLEX_HALF << CSI_ETH_PHY_DUPLEX_Pos) ///< Half duplex link
- #define CSI_ETH_PHY_DUPLEX_FULL (CSI_ETH_DUPLEX_FULL << CSI_ETH_PHY_DUPLEX_Pos) ///< Full duplex link
- #define CSI_ETH_PHY_AUTO_NEGOTIATE (1UL << 3) ///< Auto Negotiation mode
- #define CSI_ETH_PHY_LOOPBACK (1UL << 4) ///< Loop-back test mode
- #define CSI_ETH_PHY_ISOLATE (1UL << 5) ///< Isolate PHY from MII/RMII interface
- typedef int32_t (*csi_eth_phy_read_t) (uint8_t phy_addr, uint8_t reg_addr, uint16_t *data); ///< Read Ethernet PHY Register.
- typedef int32_t (*csi_eth_phy_write_t) (uint8_t phy_addr, uint8_t reg_addr, uint16_t data); ///< Write Ethernet PHY Register.
- typedef struct {
- csi_eth_phy_read_t phy_read;
- csi_eth_phy_write_t phy_write;
- eth_link_info_t link_info;
- }eth_phy_priv_t;
- // Function documentation
- /**
- \brief Get driver version.
- \param[in] handle ethernet phy handle
- \return driver version
- */
- csi_drv_version_t csi_eth_phy_get_version(eth_phy_handle_t handle);
- /**
- \brief Initialize Ethernet PHY Device.
- \param[in] fn_read
- \param[in] fn_write
- \return ethernet phy handle
- */
- eth_phy_handle_t csi_eth_phy_initialize(csi_eth_phy_read_t fn_read, csi_eth_phy_write_t fn_write);
- /**
- \brief De-initialize Ethernet PHY Device.
- \param[in] handle ethernet phy handle
- \return error code
- */
- int32_t csi_eth_phy_uninitialize(eth_phy_handle_t handle);
- /**
- \brief Control Ethernet PHY Device Power.
- \param[in] handle ethernet phy handle
- \param[in] state Power state
- \return error code
- */
- int32_t csi_eth_phy_power_control(eth_phy_handle_t handle, eth_power_state_t state);
- /**
- \brief Set Ethernet Media Interface.
- \param[in] handle ethernet phy handle
- \param[in] interface Media Interface type
- \return error code
- */
- int32_t csi_eth_phy_set_interface(eth_phy_handle_t handle, uint32_t interface);
- /**
- \brief Set Ethernet PHY Device Operation mode.
- \param[in] handle ethernet phy handle
- \param[in] mode Operation Mode
- \return error code
- */
- int32_t csi_eth_phy_set_mode(eth_phy_handle_t handle, uint32_t mode);
- /**
- \brief Get Ethernet PHY Device Link state.
- \param[in] handle ethernet phy handle
- \return current link status \ref eth_link_state_t
- */
- eth_link_state_t csi_eth_phy_get_linkstate(eth_phy_handle_t handle);
- /**
- \brief Get Ethernet PHY Device Link information.
- \param[in] handle ethernet phy handle
- \return current link parameters \ref eth_link_info_t
- */
- eth_link_info_t csi_eth_phy_get_linkinfo(eth_phy_handle_t handle);
- #ifdef __cplusplus
- }
- #endif
- #endif
|