LCOV - code coverage report
Current view: top level - zephyr/net - mdio.h Coverage Total Hit
Test: new.info Lines: 97.6 % 82 80
Test Date: 2025-09-05 22:20:39

            Line data    Source code
       1            1 : /*
       2              :  * Copyright 2023 NXP
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /**
       8              :  * @file
       9              :  * @brief Definitions for IEEE 802.3 management interface
      10              :  */
      11              : 
      12              : #ifndef ZEPHYR_INCLUDE_NET_MDIO_H_
      13              : #define ZEPHYR_INCLUDE_NET_MDIO_H_
      14              : 
      15              : /**
      16              :  * @brief Definitions for IEEE 802.3 management interface
      17              :  * @defgroup ethernet_mdio IEEE 802.3 management interface
      18              :  * @since 3.5
      19              :  * @version 0.8.0
      20              :  * @ingroup ethernet
      21              :  * @{
      22              :  */
      23              : 
      24              : #ifdef __cplusplus
      25              : extern "C" {
      26              : #endif
      27              : 
      28              : /** MDIO transaction operation code */
      29            1 : enum mdio_opcode {
      30              :         /** IEEE 802.3 22.2.4.5.4 write operation */
      31              :         MDIO_OP_C22_WRITE = 1,
      32              : 
      33              :         /** IEEE 802.3 22.2.4.5.4 read operation */
      34              :         MDIO_OP_C22_READ = 2,
      35              : 
      36              :         /** IEEE 802.3 45.3.4 address operation */
      37              :         MDIO_OP_C45_ADDRESS = 0,
      38              : 
      39              :         /** IEEE 802.3 45.3.4 write operation */
      40              :         MDIO_OP_C45_WRITE = 1,
      41              : 
      42              :         /** IEEE 802.3 45.3.4 post-read-increment-address operation */
      43              :         MDIO_OP_C45_READ_INC = 2,
      44              : 
      45              :         /** IEEE 802.3 45.3.4 read operation */
      46              :         MDIO_OP_C45_READ = 3
      47              : };
      48              : 
      49              : /* MDIO Manageable Device addresses */
      50              : /** Physical Medium Attachment / Physical Medium Dependent */
      51            1 : #define MDIO_MMD_PMAPMD                 0x01U
      52              : /** WAN Interface Sublayer */
      53            1 : #define MDIO_MMD_WIS                    0x02U
      54              : /** Physical Coding Sublayer */
      55            1 : #define MDIO_MMD_PCS                    0x03U
      56              : /** PHY Extender Sublayer */
      57            1 : #define MDIO_MMD_PHYXS                  0x04U
      58              : /** DTE Extender Sublayer */
      59            1 : #define MDIO_MMD_DTEXS                  0x05U
      60              : /** Transmission Convergence */
      61            1 : #define MDIO_MMD_TC                     0x06U
      62              : /** Auto-negotiation */
      63            1 : #define MDIO_MMD_AN                     0x07U
      64              : /** Separated PMA (1) */
      65            1 : #define MDIO_MMD_SEPARATED_PMA1         0x08U
      66              : /** Separated PMA (2) */
      67            1 : #define MDIO_MMD_SEPARATED_PMA2         0x09U
      68              : /** Separated PMA (3) */
      69            1 : #define MDIO_MMD_SEPARATED_PMA3         0x0AU
      70              : /** Separated PMA (4) */
      71            1 : #define MDIO_MMD_SEPARATED_PMA4         0x0BU
      72              : /** Clause 22 extension */
      73            1 : #define MDIO_MMD_C22EXT                 0x1DU
      74              : /** Vendor Specific 1 */
      75            1 : #define MDIO_MMD_VENDOR_SPECIFIC1       0x1EU
      76              : /** Vendor Specific 2 */
      77            1 : #define MDIO_MMD_VENDOR_SPECIFIC2       0x1FU
      78              : 
      79              : /* MDIO generic registers */
      80              : /** Control 1 */
      81            1 : #define MDIO_CTRL1                      0x0000U
      82              : /** Status 1 */
      83            1 : #define MDIO_STAT1                      0x0001U
      84              : /** Device identifier (1) */
      85            1 : #define MDIO_DEVID1                     0x0002U
      86              : /** Device identifier (2) */
      87            1 : #define MDIO_DEVID2                     0x0003U
      88              : /** Speed ability */
      89            1 : #define MDIO_SPEED                      0x0004U
      90              : /** Devices in package (1) */
      91            1 : #define MDIO_DEVS1                      0x0005U
      92              : /** Devices in package (2) */
      93            1 : #define MDIO_DEVS2                      0x0006U
      94              : /** Control 2 */
      95            1 : #define MDIO_CTRL2                      0x0007U
      96              : /** Status 2 */
      97            1 : #define MDIO_STAT2                      0x0008U
      98              : /** Package identifier (1) */
      99            1 : #define MDIO_PKGID1                     0x000EU
     100              : /** Package identifier (2) */
     101            1 : #define MDIO_PKGID2                     0x000FU
     102              : /* PCS Register: EEE capability Register */
     103            0 : #define MDIO_PCS_EEE_CAP                0x0014U
     104              : /* Auto-negotiation Register: EEE advertisement Register */
     105            0 : #define MDIO_AN_EEE_ADV                 0x003CU
     106              : 
     107              : 
     108              : /* BASE-T1 registers */
     109              : /** BASE-T1 Auto-negotiation control */
     110            1 : #define MDIO_AN_T1_CTRL                 0x0200U
     111              : /** BASE-T1 Auto-negotiation status */
     112            1 : #define MDIO_AN_T1_STAT                 0x0201U
     113              : /** BASE-T1 Auto-negotiation advertisement register [15:0] */
     114            1 : #define MDIO_AN_T1_ADV_L                0x0202U
     115              : /** BASE-T1 Auto-negotiation advertisement register [31:16] */
     116            1 : #define MDIO_AN_T1_ADV_M                0x0203U
     117              : /** BASE-T1 Auto-negotiation advertisement register [47:32] */
     118            1 : #define MDIO_AN_T1_ADV_H                0x0204U
     119              : /** BASE-T1 PMA/PMD control register */
     120            1 : #define MDIO_PMA_PMD_BT1_CTRL           0x0834U
     121              : 
     122              : /* BASE-T1 Auto-negotiation Control register */
     123              : /** Auto-negotiation Restart */
     124            1 : #define MDIO_AN_T1_CTRL_RESTART         BIT(9)
     125              : /** Auto-negotiation Enable */
     126            1 : #define MDIO_AN_T1_CTRL_EN              BIT(12)
     127              : 
     128              : /* BASE-T1 Auto-negotiation Status register */
     129              : /** Link Status */
     130            1 : #define MDIO_AN_T1_STAT_LINK_STATUS     BIT(2)
     131              : /** Auto-negotiation Ability */
     132            1 : #define MDIO_AN_T1_STAT_ABLE            BIT(3)
     133              : /** Auto-negotiation Remote Fault */
     134            1 : #define MDIO_AN_T1_STAT_REMOTE_FAULT    BIT(4)
     135              : /** Auto-negotiation Complete */
     136            1 : #define MDIO_AN_T1_STAT_COMPLETE        BIT(5)
     137              : /** Page Received */
     138            1 : #define MDIO_AN_T1_STAT_PAGE_RX         BIT(6)
     139              : 
     140              : /* BASE-T1 Auto-negotiation Advertisement register [15:0] */
     141              : /** Pause Ability */
     142            1 : #define MDIO_AN_T1_ADV_L_PAUSE_CAP      BIT(10)
     143              : /** Pause Ability */
     144            1 : #define MDIO_AN_T1_ADV_L_PAUSE_ASYM     BIT(11)
     145              : /** Force Master/Slave Configuration */
     146            1 : #define MDIO_AN_T1_ADV_L_FORCE_MS       BIT(12)
     147              : /** Remote Fault */
     148            1 : #define MDIO_AN_T1_ADV_L_REMOTE_FAULT   BIT(13)
     149              : /** Acknowledge (ACK) */
     150            1 : #define MDIO_AN_T1_ADV_L_ACK            BIT(14)
     151              : /** Next Page Request */
     152            1 : #define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ  BIT(15)
     153              : 
     154              : /* BASE-T1 Auto-negotiation Advertisement register [31:16] */
     155              : /** 10BASE-T1L Ability */
     156            1 : #define MDIO_AN_T1_ADV_M_B10L           BIT(14)
     157              : /** Master/slave Configuration */
     158            1 : #define MDIO_AN_T1_ADV_M_MST            BIT(4)
     159              : 
     160              : /* BASE-T1 Auto-negotiation Advertisement register [47:32] */
     161              : /** 10BASE-T1L High Level Transmit Operating Mode Request */
     162            1 : #define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ  BIT(12)
     163              : /** 10BASE-T1L High Level Transmit Operating Mode Ability */
     164            1 : #define MDIO_AN_T1_ADV_H_10L_TX_HI      BIT(13)
     165              : 
     166              : /* BASE-T1 PMA/PMD control register */
     167              : /** BASE-T1 master/slave configuration */
     168            1 : #define MDIO_PMA_PMD_BT1_CTRL_CFG_MST   BIT(14)
     169              : 
     170              : 
     171              : /* 10BASE-T1L registers */
     172              : /** 10BASE-T1L PMA control */
     173            1 : #define MDIO_PMA_B10L_CTRL              0x08F6U
     174              : /** 10BASE-T1L PMA status */
     175            1 : #define MDIO_PMA_B10L_STAT              0x08F7U
     176              : /** 10BASE-T1L PMA link status*/
     177            1 : #define MDIO_PMA_B10L_LINK_STAT         0x8302U
     178              : /** 10BASE-T1L PCS control */
     179            1 : #define MDIO_PCS_B10L_CTRL              0x08E6U
     180              : /** 10BASE-T1L PCS status */
     181            1 : #define MDIO_PCS_B10L_STAT              0x08E7U
     182              : 
     183              : /* 10BASE-T1L PMA control register */
     184              : /** 10BASE-T1L Transmit Disable Mode */
     185            1 : #define MDIO_PMA_B10L_CTRL_TX_DIS_MODE_EN               BIT(14)
     186              : /** 10BASE-T1L Transmit Voltage Amplitude Control */
     187            1 : #define MDIO_PMA_B10L_CTRL_TX_LVL_HI                    BIT(12)
     188              : /** 10BASE-T1L EEE Enable */
     189            1 : #define MDIO_PMA_B10L_CTRL_EEE                          BIT(10)
     190              : /** 10BASE-T1L PMA Loopback */
     191            1 : #define MDIO_PMA_B10L_CTRL_LB_PMA_LOC_EN                BIT(0)
     192              : 
     193              : /* 10BASE-T1L PMA status register */
     194              : /** 10BASE-T1L PMA receive link up */
     195            1 : #define MDIO_PMA_B10L_STAT_LINK                         BIT(0)
     196              : /** 10BASE-T1L Fault condition detected */
     197            1 : #define MDIO_PMA_B10L_STAT_FAULT                        BIT(1)
     198              : /** 10BASE-T1L Receive polarity is reversed */
     199            1 : #define MDIO_PMA_B10L_STAT_POLARITY                     BIT(2)
     200              : /** 10BASE-T1L Able to detect fault on receive path */
     201            1 : #define MDIO_PMA_B10L_STAT_RECV_FAULT                   BIT(9)
     202              : /** 10BASE-T1L PHY has EEE ability */
     203            1 : #define MDIO_PMA_B10L_STAT_EEE                          BIT(10)
     204              : /** 10BASE-T1L PMA has low-power ability */
     205            1 : #define MDIO_PMA_B10L_STAT_LOW_POWER                    BIT(11)
     206              : /** 10BASE-T1L PHY has 2.4 Vpp operating mode ability */
     207            1 : #define MDIO_PMA_B10L_STAT_2V4_ABLE                     BIT(12)
     208              : /** 10BASE-T1L PHY has loopback ability */
     209            1 : #define MDIO_PMA_B10L_STAT_LB_ABLE                      BIT(13)
     210              : 
     211              : /* 10BASE-T1L PMA link status*/
     212              : /** 10BASE-T1L Remote Receiver Status OK Latch Low */
     213            1 : #define MDIO_PMA_B10L_LINK_STAT_REM_RCVR_STAT_OK_LL     BIT(9)
     214              : /** 10BASE-T1L Remote Receiver Status OK */
     215            1 : #define MDIO_PMA_B10L_LINK_STAT_REM_RCVR_STAT_OK        BIT(8)
     216              : /** 10BASE-T1L Local Receiver Status OK */
     217            1 : #define MDIO_PMA_B10L_LINK_STAT_LOC_RCVR_STAT_OK_LL     BIT(7)
     218              : /** 10BASE-T1L Local Receiver Status OK */
     219            1 : #define MDIO_PMA_B10L_LINK_STAT_LOC_RCVR_STAT_OK        BIT(6)
     220              : /** 10BASE-T1L Descrambler Status OK Latch Low */
     221            1 : #define MDIO_PMA_B10L_LINK_STAT_DSCR_STAT_OK_LL         BIT(5)
     222              : /** 10BASE-T1L Descrambler Status OK */
     223            1 : #define MDIO_PMA_B10L_LINK_STAT_DSCR_STAT_OK            BIT(4)
     224              : /** 10BASE-T1L Link Status OK Latch Low */
     225            1 : #define MDIO_PMA_B10L_LINK_STAT_LINK_STAT_OK_LL         BIT(1)
     226              : /** 10BASE-T1L Link Status OK */
     227            1 : #define MDIO_PMA_B10L_LINK_STAT_LINK_STAT_OK            BIT(0)
     228              : 
     229              : /* 10BASE-T1L PCS control */
     230              : /** 10BASE-T1L PCS Loopback Enable */
     231            1 : #define MDIO_PCS_B10L_CTRL_LB_PCS_EN                    BIT(14)
     232              : 
     233              : /* 10BASE-T1L PCS status */
     234              : /** 10BASE-T1L PCS Descrambler Status */
     235            1 : #define MDIO_PCS_B10L_STAT_DSCR_STAT_OK_LL              BIT(2)
     236              : 
     237              : /* Auto-negotiation Register: EEE advertisement Register */
     238              : /** Advertise 1000T capability */
     239            1 : #define MDIO_AN_EEE_ADV_1000T                           BIT(2)
     240              : /** Advertise 100TX capability */
     241            1 : #define MDIO_AN_EEE_ADV_100TX                           BIT(1)
     242              : 
     243              : #ifdef __cplusplus
     244              : }
     245              : #endif
     246              : 
     247              : /**
     248              :  * @}
     249              :  */
     250              : 
     251              : #endif /* ZEPHYR_INCLUDE_NET_MDIO_H_ */
        

Generated by: LCOV version 2.0-1