Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
mdio.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
11
12#ifndef ZEPHYR_INCLUDE_NET_MDIO_H_
13#define ZEPHYR_INCLUDE_NET_MDIO_H_
14
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
48
49/* MDIO Manageable Device addresses */
51#define MDIO_MMD_PMAPMD 0x01U
53#define MDIO_MMD_WIS 0x02U
55#define MDIO_MMD_PCS 0x03U
57#define MDIO_MMD_PHYXS 0x04U
59#define MDIO_MMD_DTEXS 0x05U
61#define MDIO_MMD_TC 0x06U
63#define MDIO_MMD_AN 0x07U
65#define MDIO_MMD_SEPARATED_PMA1 0x08U
67#define MDIO_MMD_SEPARATED_PMA2 0x09U
69#define MDIO_MMD_SEPARATED_PMA3 0x0AU
71#define MDIO_MMD_SEPARATED_PMA4 0x0BU
73#define MDIO_MMD_C22EXT 0x1DU
75#define MDIO_MMD_VENDOR_SPECIFIC1 0x1EU
77#define MDIO_MMD_VENDOR_SPECIFIC2 0x1FU
78
79/* MDIO generic registers */
81#define MDIO_CTRL1 0x0000U
83#define MDIO_STAT1 0x0001U
85#define MDIO_DEVID1 0x0002U
87#define MDIO_DEVID2 0x0003U
89#define MDIO_SPEED 0x0004U
91#define MDIO_DEVS1 0x0005U
93#define MDIO_DEVS2 0x0006U
95#define MDIO_CTRL2 0x0007U
97#define MDIO_STAT2 0x0008U
99#define MDIO_PKGID1 0x000EU
101#define MDIO_PKGID2 0x000FU
102/* PCS Register: EEE capability Register */
103#define MDIO_PCS_EEE_CAP 0x0014U
104/* Auto-negotiation Register: EEE advertisement Register */
105#define MDIO_AN_EEE_ADV 0x003CU
106
107
108/* BASE-T1 registers */
110#define MDIO_AN_T1_CTRL 0x0200U
112#define MDIO_AN_T1_STAT 0x0201U
114#define MDIO_AN_T1_ADV_L 0x0202U
116#define MDIO_AN_T1_ADV_M 0x0203U
118#define MDIO_AN_T1_ADV_H 0x0204U
120#define MDIO_AN_T1_LP_ADV_L 0x0205U
122#define MDIO_AN_T1_LP_ADV_M 0x0206U
124#define MDIO_AN_T1_LP_ADV_H 0x0207U
125
127#define MDIO_PMA_PMD_BT1_CTRL 0x0834U
128
129/* BASE-T1 Auto-negotiation Control register */
131#define MDIO_AN_T1_CTRL_RESTART BIT(9)
133#define MDIO_AN_T1_CTRL_EN BIT(12)
134
135/* BASE-T1 Auto-negotiation Status register */
137#define MDIO_AN_T1_STAT_LINK_STATUS BIT(2)
139#define MDIO_AN_T1_STAT_ABLE BIT(3)
141#define MDIO_AN_T1_STAT_REMOTE_FAULT BIT(4)
143#define MDIO_AN_T1_STAT_COMPLETE BIT(5)
145#define MDIO_AN_T1_STAT_PAGE_RX BIT(6)
146
147/* BASE-T1 Auto-negotiation Advertisement register [15:0] */
149#define MDIO_AN_T1_ADV_L_PAUSE_CAP BIT(10)
151#define MDIO_AN_T1_ADV_L_PAUSE_ASYM BIT(11)
153#define MDIO_AN_T1_ADV_L_FORCE_MS BIT(12)
155#define MDIO_AN_T1_ADV_L_REMOTE_FAULT BIT(13)
157#define MDIO_AN_T1_ADV_L_ACK BIT(14)
159#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ BIT(15)
160
161/* BASE-T1 Auto-negotiation Advertisement register [31:16] */
163#define MDIO_AN_T1_ADV_M_B10L BIT(14)
165#define MDIO_AN_T1_ADV_M_MST BIT(4)
166
167/* BASE-T1 Auto-negotiation Advertisement register [47:32] */
169#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ BIT(12)
171#define MDIO_AN_T1_ADV_H_10L_TX_HI BIT(13)
173#define MDIO_AN_T1_ADV_H_10L_EEE BIT(14)
174
175/* BASE-T1 PMA/PMD control register */
177#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST BIT(14)
178
179
180/* 10BASE-T1L registers */
182#define MDIO_PMA_B10L_CTRL 0x08F6U
184#define MDIO_PMA_B10L_STAT 0x08F7U
186#define MDIO_PMA_B10L_TEST_CTRL 0x08F8U
188#define MDIO_PMA_B10L_LINK_STAT 0x8302U
190#define MDIO_PCS_B10L_CTRL 0x08E6U
192#define MDIO_PCS_B10L_STAT 0x08E7U
193
194/* 10BASE-T1L PMA control register */
196#define MDIO_PMA_B10L_CTRL_TX_DIS_MODE_EN BIT(14)
198#define MDIO_PMA_B10L_CTRL_TX_LVL_HI BIT(12)
200#define MDIO_PMA_B10L_CTRL_EEE BIT(10)
202#define MDIO_PMA_B10L_CTRL_LB_PMA_LOC_EN BIT(0)
203
204/* 10BASE-T1L PMA status register */
206#define MDIO_PMA_B10L_STAT_LINK BIT(0)
208#define MDIO_PMA_B10L_STAT_FAULT BIT(1)
210#define MDIO_PMA_B10L_STAT_POLARITY BIT(2)
212#define MDIO_PMA_B10L_STAT_RECV_FAULT BIT(9)
214#define MDIO_PMA_B10L_STAT_EEE BIT(10)
216#define MDIO_PMA_B10L_STAT_LOW_POWER BIT(11)
218#define MDIO_PMA_B10L_STAT_2V4_ABLE BIT(12)
220#define MDIO_PMA_B10L_STAT_LB_ABLE BIT(13)
221
222/* 10BASE-T1L test mode control register */
224#define MDIO_PMA_B10L_TEST_CTRL_TEST_MODE_MASK GENMASK(15, 13)
226#define MDIO_PMA_B10L_TEST_CTRL_TEST_MODE_1 BIT(13)
228#define MDIO_PMA_B10L_TEST_CTRL_TEST_MODE_2 BIT(14)
230#define MDIO_PMA_B10L_TEST_CTRL_TEST_MODE_3 (BIT(13) | BIT(14))
231
232/* 10BASE-T1L PMA link status*/
234#define MDIO_PMA_B10L_LINK_STAT_REM_RCVR_STAT_OK_LL BIT(9)
236#define MDIO_PMA_B10L_LINK_STAT_REM_RCVR_STAT_OK BIT(8)
238#define MDIO_PMA_B10L_LINK_STAT_LOC_RCVR_STAT_OK_LL BIT(7)
240#define MDIO_PMA_B10L_LINK_STAT_LOC_RCVR_STAT_OK BIT(6)
242#define MDIO_PMA_B10L_LINK_STAT_DSCR_STAT_OK_LL BIT(5)
244#define MDIO_PMA_B10L_LINK_STAT_DSCR_STAT_OK BIT(4)
246#define MDIO_PMA_B10L_LINK_STAT_LINK_STAT_OK_LL BIT(1)
248#define MDIO_PMA_B10L_LINK_STAT_LINK_STAT_OK BIT(0)
249
250/* 10BASE-T1L PCS control */
252#define MDIO_PCS_B10L_CTRL_LB_PCS_EN BIT(14)
253
254/* 10BASE-T1L PCS status */
256#define MDIO_PCS_B10L_STAT_DSCR_STAT_OK_LL BIT(2)
257
258/* Auto-negotiation Register: EEE advertisement Register */
260#define MDIO_AN_EEE_ADV_1000T BIT(2)
262#define MDIO_AN_EEE_ADV_100TX BIT(1)
263
264#ifdef __cplusplus
265}
266#endif
267
271
272#endif /* ZEPHYR_INCLUDE_NET_MDIO_H_ */
mdio_opcode
MDIO transaction operation code.
Definition mdio.h:29
@ MDIO_OP_C45_READ
IEEE 802.3 45.3.4 read operation.
Definition mdio.h:46
@ MDIO_OP_C22_WRITE
IEEE 802.3 22.2.4.5.4 write operation.
Definition mdio.h:31
@ MDIO_OP_C22_READ
IEEE 802.3 22.2.4.5.4 read operation.
Definition mdio.h:34
@ MDIO_OP_C45_READ_INC
IEEE 802.3 45.3.4 post-read-increment-address operation.
Definition mdio.h:43
@ MDIO_OP_C45_ADDRESS
IEEE 802.3 45.3.4 address operation.
Definition mdio.h:37
@ MDIO_OP_C45_WRITE
IEEE 802.3 45.3.4 write operation.
Definition mdio.h:40