The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_LPC546XX/TOOLCHAIN_IAR/fsl_phy.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anna Bridge |
160:5571c4ff569f | 1 | /* |
AnnaBridge | 163:e59c8e839560 | 2 | * The Clear BSD License |
Anna Bridge |
160:5571c4ff569f | 3 | * Copyright (c) 2016, Freescale Semiconductor, Inc. |
Anna Bridge |
160:5571c4ff569f | 4 | * Copyright 2016-2017 NXP |
AnnaBridge | 163:e59c8e839560 | 5 | * All rights reserved. |
Anna Bridge |
160:5571c4ff569f | 6 | * |
Anna Bridge |
160:5571c4ff569f | 7 | * Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 163:e59c8e839560 | 8 | * are permitted (subject to the limitations in the disclaimer below) provided |
AnnaBridge | 163:e59c8e839560 | 9 | * that the following conditions are met: |
Anna Bridge |
160:5571c4ff569f | 10 | * |
Anna Bridge |
160:5571c4ff569f | 11 | * o Redistributions of source code must retain the above copyright notice, this list |
Anna Bridge |
160:5571c4ff569f | 12 | * of conditions and the following disclaimer. |
Anna Bridge |
160:5571c4ff569f | 13 | * |
Anna Bridge |
160:5571c4ff569f | 14 | * o Redistributions in binary form must reproduce the above copyright notice, this |
Anna Bridge |
160:5571c4ff569f | 15 | * list of conditions and the following disclaimer in the documentation and/or |
Anna Bridge |
160:5571c4ff569f | 16 | * other materials provided with the distribution. |
Anna Bridge |
160:5571c4ff569f | 17 | * |
Anna Bridge |
160:5571c4ff569f | 18 | * o Neither the name of the copyright holder nor the names of its |
Anna Bridge |
160:5571c4ff569f | 19 | * contributors may be used to endorse or promote products derived from this |
Anna Bridge |
160:5571c4ff569f | 20 | * software without specific prior written permission. |
Anna Bridge |
160:5571c4ff569f | 21 | * |
AnnaBridge | 163:e59c8e839560 | 22 | * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. |
Anna Bridge |
160:5571c4ff569f | 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
Anna Bridge |
160:5571c4ff569f | 24 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
Anna Bridge |
160:5571c4ff569f | 25 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
Anna Bridge |
160:5571c4ff569f | 26 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
Anna Bridge |
160:5571c4ff569f | 27 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
Anna Bridge |
160:5571c4ff569f | 28 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
Anna Bridge |
160:5571c4ff569f | 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
Anna Bridge |
160:5571c4ff569f | 30 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
Anna Bridge |
160:5571c4ff569f | 31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
Anna Bridge |
160:5571c4ff569f | 32 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Anna Bridge |
160:5571c4ff569f | 33 | */ |
Anna Bridge |
160:5571c4ff569f | 34 | #ifndef _FSL_PHY_H_ |
Anna Bridge |
160:5571c4ff569f | 35 | #define _FSL_PHY_H_ |
Anna Bridge |
160:5571c4ff569f | 36 | |
Anna Bridge |
160:5571c4ff569f | 37 | #include "fsl_enet.h" |
Anna Bridge |
160:5571c4ff569f | 38 | |
Anna Bridge |
160:5571c4ff569f | 39 | /*! |
Anna Bridge |
160:5571c4ff569f | 40 | * @addtogroup phy_driver |
Anna Bridge |
160:5571c4ff569f | 41 | * @{ |
Anna Bridge |
160:5571c4ff569f | 42 | */ |
Anna Bridge |
160:5571c4ff569f | 43 | |
Anna Bridge |
160:5571c4ff569f | 44 | /******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 45 | * Definitions |
Anna Bridge |
160:5571c4ff569f | 46 | ******************************************************************************/ |
Anna Bridge |
160:5571c4ff569f | 47 | |
Anna Bridge |
160:5571c4ff569f | 48 | /*! @brief PHY driver version */ |
Anna Bridge |
160:5571c4ff569f | 49 | #define FSL_PHY_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */ |
Anna Bridge |
160:5571c4ff569f | 50 | |
Anna Bridge |
160:5571c4ff569f | 51 | /*! @brief Defines the PHY registers. */ |
Anna Bridge |
160:5571c4ff569f | 52 | #define PHY_BASICCONTROL_REG 0x00U /*!< The PHY basic control register. */ |
Anna Bridge |
160:5571c4ff569f | 53 | #define PHY_BASICSTATUS_REG 0x01U /*!< The PHY basic status register. */ |
Anna Bridge |
160:5571c4ff569f | 54 | #define PHY_ID1_REG 0x02U /*!< The PHY ID one register. */ |
Anna Bridge |
160:5571c4ff569f | 55 | #define PHY_ID2_REG 0x03U /*!< The PHY ID two register. */ |
Anna Bridge |
160:5571c4ff569f | 56 | #define PHY_AUTONEG_ADVERTISE_REG 0x04U /*!< The PHY auto-negotiate advertise register. */ |
Anna Bridge |
160:5571c4ff569f | 57 | #define PHY_SEPCIAL_CONTROL_REG 0x1FU /*!< The PHY control two register. */ |
Anna Bridge |
160:5571c4ff569f | 58 | |
Anna Bridge |
160:5571c4ff569f | 59 | #define PHY_CONTROL_ID1 0x07U /*!< The PHY ID1*/ |
Anna Bridge |
160:5571c4ff569f | 60 | |
Anna Bridge |
160:5571c4ff569f | 61 | /*! @brief Defines the mask flag in basic control register. */ |
Anna Bridge |
160:5571c4ff569f | 62 | #define PHY_BCTL_DUPLEX_MASK 0x0100U /*!< The PHY duplex bit mask. */ |
Anna Bridge |
160:5571c4ff569f | 63 | #define PHY_BCTL_RESTART_AUTONEG_MASK 0x0200U /*!< The PHY restart auto negotiation mask. */ |
Anna Bridge |
160:5571c4ff569f | 64 | #define PHY_BCTL_AUTONEG_MASK 0x1000U /*!< The PHY auto negotiation bit mask. */ |
Anna Bridge |
160:5571c4ff569f | 65 | #define PHY_BCTL_SPEED_MASK 0x2000U /*!< The PHY speed bit mask. */ |
Anna Bridge |
160:5571c4ff569f | 66 | #define PHY_BCTL_LOOP_MASK 0x4000U /*!< The PHY loop bit mask. */ |
Anna Bridge |
160:5571c4ff569f | 67 | #define PHY_BCTL_RESET_MASK 0x8000U /*!< The PHY reset bit mask. */ |
Anna Bridge |
160:5571c4ff569f | 68 | |
Anna Bridge |
160:5571c4ff569f | 69 | /*!@brief Defines the mask flag of operation mode in special control register*/ |
Anna Bridge |
160:5571c4ff569f | 70 | #define PHY_SPECIALCTL_AUTONEGDONE_MASK 0x1000U /*!< The PHY auto-negotiation complete mask. */ |
Anna Bridge |
160:5571c4ff569f | 71 | #define PHY_SPECIALCTL_DUPLEX_MASK 0x0010U /*!< The PHY duplex mask. */ |
Anna Bridge |
160:5571c4ff569f | 72 | #define PHY_SPECIALCTL_100SPEED_MASK 0x0008U /*!< The PHY speed mask. */ |
Anna Bridge |
160:5571c4ff569f | 73 | #define PHY_SPECIALCTL_10SPEED_MASK 0x0004U /*!< The PHY speed mask. */ |
Anna Bridge |
160:5571c4ff569f | 74 | #define PHY_SPECIALCTL_SPEEDUPLX_MASK 0x001cU /*!< The PHY speed and duplex mask. */ |
Anna Bridge |
160:5571c4ff569f | 75 | |
Anna Bridge |
160:5571c4ff569f | 76 | /*! @brief Defines the mask flag in basic status register. */ |
Anna Bridge |
160:5571c4ff569f | 77 | #define PHY_BSTATUS_LINKSTATUS_MASK 0x0004U /*!< The PHY link status mask. */ |
Anna Bridge |
160:5571c4ff569f | 78 | |
Anna Bridge |
160:5571c4ff569f | 79 | /*! @brief Defines the mask flag in PHY auto-negotiation advertise register. */ |
Anna Bridge |
160:5571c4ff569f | 80 | #define PHY_ALL_CAPABLE_MASK 0x1e0U |
Anna Bridge |
160:5571c4ff569f | 81 | |
Anna Bridge |
160:5571c4ff569f | 82 | /*! @brief Defines the PHY status. */ |
Anna Bridge |
160:5571c4ff569f | 83 | enum _phy_status |
Anna Bridge |
160:5571c4ff569f | 84 | { |
Anna Bridge |
160:5571c4ff569f | 85 | kStatus_PHY_SMIVisitTimeout = MAKE_STATUS(kStatusGroup_PHY, 0), /*!< ENET PHY SMI visit timeout. */ |
Anna Bridge |
160:5571c4ff569f | 86 | }; |
Anna Bridge |
160:5571c4ff569f | 87 | |
Anna Bridge |
160:5571c4ff569f | 88 | /*! @brief Defines the PHY link speed. This is align with the speed for ENET MAC. */ |
Anna Bridge |
160:5571c4ff569f | 89 | typedef enum _phy_speed { |
Anna Bridge |
160:5571c4ff569f | 90 | kPHY_Speed10M = 0U, /*!< ENET PHY 10M speed. */ |
Anna Bridge |
160:5571c4ff569f | 91 | kPHY_Speed100M /*!< ENET PHY 100M speed. */ |
Anna Bridge |
160:5571c4ff569f | 92 | } phy_speed_t; |
Anna Bridge |
160:5571c4ff569f | 93 | |
Anna Bridge |
160:5571c4ff569f | 94 | /*! @brief Defines the PHY link duplex. */ |
Anna Bridge |
160:5571c4ff569f | 95 | typedef enum _phy_duplex { |
Anna Bridge |
160:5571c4ff569f | 96 | kPHY_HalfDuplex = 0U, /*!< ENET PHY half duplex. */ |
Anna Bridge |
160:5571c4ff569f | 97 | kPHY_FullDuplex /*!< ENET PHY full duplex. */ |
Anna Bridge |
160:5571c4ff569f | 98 | } phy_duplex_t; |
Anna Bridge |
160:5571c4ff569f | 99 | |
Anna Bridge |
160:5571c4ff569f | 100 | /******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 101 | * API |
Anna Bridge |
160:5571c4ff569f | 102 | ******************************************************************************/ |
Anna Bridge |
160:5571c4ff569f | 103 | |
Anna Bridge |
160:5571c4ff569f | 104 | #if defined(__cplusplus) |
Anna Bridge |
160:5571c4ff569f | 105 | extern "C" { |
Anna Bridge |
160:5571c4ff569f | 106 | #endif |
Anna Bridge |
160:5571c4ff569f | 107 | |
Anna Bridge |
160:5571c4ff569f | 108 | /*! |
Anna Bridge |
160:5571c4ff569f | 109 | * @name PHY Driver |
Anna Bridge |
160:5571c4ff569f | 110 | * @{ |
Anna Bridge |
160:5571c4ff569f | 111 | */ |
Anna Bridge |
160:5571c4ff569f | 112 | |
Anna Bridge |
160:5571c4ff569f | 113 | /*! |
Anna Bridge |
160:5571c4ff569f | 114 | * @brief Initializes PHY. |
Anna Bridge |
160:5571c4ff569f | 115 | * |
Anna Bridge |
160:5571c4ff569f | 116 | * This function initialize the SMI interface and initialize PHY. |
Anna Bridge |
160:5571c4ff569f | 117 | * The SMI is the MII management interface between PHY and MAC, which should be |
AnnaBridge | 163:e59c8e839560 | 118 | * firstly initialized before any other operation for PHY. The PHY initialize with auto-negotiation. |
Anna Bridge |
160:5571c4ff569f | 119 | * |
Anna Bridge |
160:5571c4ff569f | 120 | * @param base ENET peripheral base address. |
Anna Bridge |
160:5571c4ff569f | 121 | * @param phyAddr The PHY address. |
Anna Bridge |
160:5571c4ff569f | 122 | * @param srcClock_Hz The module clock frequency - system clock for MII management interface - SMI. |
Anna Bridge |
160:5571c4ff569f | 123 | * @retval kStatus_Success PHY initialize success |
Anna Bridge |
160:5571c4ff569f | 124 | * @retval kStatus_Fail PHY initialize fail |
Anna Bridge |
160:5571c4ff569f | 125 | */ |
Anna Bridge |
160:5571c4ff569f | 126 | status_t PHY_Init(ENET_Type *base, uint32_t phyAddr, uint32_t srcClock_Hz); |
Anna Bridge |
160:5571c4ff569f | 127 | |
Anna Bridge |
160:5571c4ff569f | 128 | /*! |
Anna Bridge |
160:5571c4ff569f | 129 | * @brief PHY Write function. This function write data over the SMI to |
Anna Bridge |
160:5571c4ff569f | 130 | * the specified PHY register. This function is called by all PHY interfaces. |
Anna Bridge |
160:5571c4ff569f | 131 | * |
Anna Bridge |
160:5571c4ff569f | 132 | * @param base ENET peripheral base address. |
Anna Bridge |
160:5571c4ff569f | 133 | * @param phyAddr The PHY address. |
Anna Bridge |
160:5571c4ff569f | 134 | * @param phyReg The PHY register. |
Anna Bridge |
160:5571c4ff569f | 135 | * @param data The data written to the PHY register. |
Anna Bridge |
160:5571c4ff569f | 136 | * @retval kStatus_Success PHY write success |
Anna Bridge |
160:5571c4ff569f | 137 | * @retval kStatus_PHY_SMIVisitTimeout PHY SMI visit time out |
Anna Bridge |
160:5571c4ff569f | 138 | */ |
Anna Bridge |
160:5571c4ff569f | 139 | status_t PHY_Write(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t data); |
Anna Bridge |
160:5571c4ff569f | 140 | |
Anna Bridge |
160:5571c4ff569f | 141 | /*! |
Anna Bridge |
160:5571c4ff569f | 142 | * @brief PHY Read function. This interface read data over the SMI from the |
Anna Bridge |
160:5571c4ff569f | 143 | * specified PHY register. This function is called by all PHY interfaces. |
Anna Bridge |
160:5571c4ff569f | 144 | * |
Anna Bridge |
160:5571c4ff569f | 145 | * @param base ENET peripheral base address. |
Anna Bridge |
160:5571c4ff569f | 146 | * @param phyAddr The PHY address. |
Anna Bridge |
160:5571c4ff569f | 147 | * @param phyReg The PHY register. |
Anna Bridge |
160:5571c4ff569f | 148 | * @param dataPtr The address to store the data read from the PHY register. |
Anna Bridge |
160:5571c4ff569f | 149 | * @retval kStatus_Success PHY read success |
Anna Bridge |
160:5571c4ff569f | 150 | * @retval kStatus_PHY_SMIVisitTimeout PHY SMI visit time out |
Anna Bridge |
160:5571c4ff569f | 151 | */ |
Anna Bridge |
160:5571c4ff569f | 152 | status_t PHY_Read(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t *dataPtr); |
Anna Bridge |
160:5571c4ff569f | 153 | |
Anna Bridge |
160:5571c4ff569f | 154 | /*! |
Anna Bridge |
160:5571c4ff569f | 155 | * @brief Gets the PHY link status. |
Anna Bridge |
160:5571c4ff569f | 156 | * |
Anna Bridge |
160:5571c4ff569f | 157 | * @param base ENET peripheral base address. |
Anna Bridge |
160:5571c4ff569f | 158 | * @param phyAddr The PHY address. |
Anna Bridge |
160:5571c4ff569f | 159 | * @param status The link up or down status of the PHY. |
Anna Bridge |
160:5571c4ff569f | 160 | * - true the link is up. |
Anna Bridge |
160:5571c4ff569f | 161 | * - false the link is down. |
Anna Bridge |
160:5571c4ff569f | 162 | * @retval kStatus_Success PHY get link status success |
Anna Bridge |
160:5571c4ff569f | 163 | * @retval kStatus_PHY_SMIVisitTimeout PHY SMI visit time out |
Anna Bridge |
160:5571c4ff569f | 164 | */ |
Anna Bridge |
160:5571c4ff569f | 165 | status_t PHY_GetLinkStatus(ENET_Type *base, uint32_t phyAddr, bool *status); |
Anna Bridge |
160:5571c4ff569f | 166 | |
Anna Bridge |
160:5571c4ff569f | 167 | /*! |
Anna Bridge |
160:5571c4ff569f | 168 | * @brief Gets the PHY link speed and duplex. |
Anna Bridge |
160:5571c4ff569f | 169 | * |
Anna Bridge |
160:5571c4ff569f | 170 | * @param base ENET peripheral base address. |
Anna Bridge |
160:5571c4ff569f | 171 | * @param phyAddr The PHY address. |
Anna Bridge |
160:5571c4ff569f | 172 | * @param speed The address of PHY link speed. |
Anna Bridge |
160:5571c4ff569f | 173 | * @param duplex The link duplex of PHY. |
Anna Bridge |
160:5571c4ff569f | 174 | * @retval kStatus_Success PHY get link speed and duplex success |
Anna Bridge |
160:5571c4ff569f | 175 | * @retval kStatus_PHY_SMIVisitTimeout PHY SMI visit time out |
Anna Bridge |
160:5571c4ff569f | 176 | */ |
Anna Bridge |
160:5571c4ff569f | 177 | status_t PHY_GetLinkSpeedDuplex(ENET_Type *base, uint32_t phyAddr, phy_speed_t *speed, phy_duplex_t *duplex); |
Anna Bridge |
160:5571c4ff569f | 178 | |
Anna Bridge |
160:5571c4ff569f | 179 | /* @} */ |
Anna Bridge |
160:5571c4ff569f | 180 | |
Anna Bridge |
160:5571c4ff569f | 181 | #if defined(__cplusplus) |
Anna Bridge |
160:5571c4ff569f | 182 | } |
Anna Bridge |
160:5571c4ff569f | 183 | #endif |
Anna Bridge |
160:5571c4ff569f | 184 | |
Anna Bridge |
160:5571c4ff569f | 185 | /*! @}*/ |
Anna Bridge |
160:5571c4ff569f | 186 | |
Anna Bridge |
160:5571c4ff569f | 187 | #endif /* _FSL_PHY_H_ */ |