dp83td510_driver.h
Go to the documentation of this file.
1 /**
2  * @file dp83td510_driver.h
3  * @brief DP83TD510 10Base-T1L Ethernet PHY driver
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneTCP Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.4.0
29  **/
30 
31 #ifndef _DP83TD510_DRIVER_H
32 #define _DP83TD510_DRIVER_H
33 
34 //Dependencies
35 #include "core/nic.h"
36 
37 //PHY address
38 #ifndef DP83TD510_PHY_ADDR
39  #define DP83TD510_PHY_ADDR 0
40 #elif (DP83TD510_PHY_ADDR < 0 || DP83TD510_PHY_ADDR > 31)
41  #error DP83TD510_PHY_ADDR parameter is not valid
42 #endif
43 
44 //DP83TD510 PHY registers
45 #define DP83TD510_MII_REG_0 0x00
46 #define DP83TD510_MII_REG_2 0x02
47 #define DP83TD510_MII_REG_3 0x03
48 #define DP83TD510_REGCR 0x0D
49 #define DP83TD510_ADDAR 0x0E
50 #define DP83TD510_PHY_STS 0x10
51 #define DP83TD510_GEN_CFG 0x11
52 #define DP83TD510_INTERRUPT_REG_1 0x12
53 #define DP83TD510_INTERRUPT_REG_2 0x13
54 #define DP83TD510_RX_ERR_CNT 0x15
55 #define DP83TD510_BISCR 0x16
56 #define DP83TD510_MAC_CFG_1 0x17
57 #define DP83TD510_MAC_CFG_2 0x18
58 #define DP83TD510_SOR_PHYAD 0x19
59 #define DP83TD510_TDR_CFG 0x1E
60 
61 //DP83TD510 MMD registers
62 #define DP83TD510_PAM_PMD_CTRL_1 0x01, 0x0000
63 #define DP83TD510_PMA_PMD_CTRL_2 0x01, 0x0007
64 #define DP83TD510_PMA_PMD_EXTENDED_ABILITY_2 0x01, 0x000B
65 #define DP83TD510_PMA_PMD_EXTENDED_ABILITY 0x01, 0x0012
66 #define DP83TD510_PMA_PMD_CTRL 0x01, 0x0834
67 #define DP83TD510_PMA_CTRL 0x01, 0x08F6
68 #define DP83TD510_PMA_STATUS 0x01, 0x08F7
69 #define DP83TD510_TEST_MODE_CTRL 0x01, 0x08F8
70 #define DP83TD510_PCS_CTRL 0x03, 0x0000
71 #define DP83TD510_PCS_CTRL_2 0x03, 0x08E6
72 #define DP83TD510_PCS_STATUS 0x03, 0x08E7
73 #define DP83TD510_AN_CONTROL 0x07, 0x0200
74 #define DP83TD510_AN_STATUS 0x07, 0x0201
75 #define DP83TD510_AN_ADV_1 0x07, 0x0202
76 #define DP83TD510_AN_ADV_2 0x07, 0x0203
77 #define DP83TD510_AN_ADV_3 0x07, 0x0204
78 #define DP83TD510_AN_LP_ADV_1 0x07, 0x0205
79 #define DP83TD510_AN_LP_ADV_2 0x07, 0x0206
80 #define DP83TD510_AN_LP_ADV_3 0x07, 0x0207
81 #define DP83TD510_AN_NP_ADV_1 0x07, 0x0208
82 #define DP83TD510_AN_NP_ADV_2 0x07, 0x0209
83 #define DP83TD510_AN_NP_ADV_3 0x07, 0x020A
84 #define DP83TD510_AN_LP_NP_ADV_1 0x07, 0x020B
85 #define DP83TD510_AN_LP_NP_ADV_2 0x07, 0x020C
86 #define DP83TD510_AN_LP_NP_ADV_3 0x07, 0x020D
87 #define DP83TD510_AN_CTRL_10BT1 0x07, 0x020E
88 #define DP83TD510_AN_STATUS_10BT1 0x07, 0x020F
89 #define DP83TD510_PRBS_CFG_1 0x1F, 0x0119
90 #define DP83TD510_PRBS_CFG_2 0x1F, 0x011A
91 #define DP83TD510_PRBS_CFG_3 0x1F, 0x011B
92 #define DP83TD510_PRBS_STATUS_1 0x1F, 0x011C
93 #define DP83TD510_PRBS_STATUS_2 0x1F, 0x011D
94 #define DP83TD510_PRBS_STATUS_3 0x1F, 0x011E
95 #define DP83TD510_PRBS_STATUS_4 0x1F, 0x011F
96 #define DP83TD510_PRBS_STATUS_5 0x1F, 0x0120
97 #define DP83TD510_PRBS_STATUS_6 0x1F, 0x0121
98 #define DP83TD510_PRBS_STATUS_7 0x1F, 0x0122
99 #define DP83TD510_PRBS_CFG_4 0x1F, 0x0123
100 #define DP83TD510_PRBS_CFG_5 0x1F, 0x0124
101 #define DP83TD510_PRBS_CFG_6 0x1F, 0x0125
102 #define DP83TD510_PRBS_CFG_7 0x1F, 0x0126
103 #define DP83TD510_PRBS_CFG_8 0x1F, 0x0127
104 #define DP83TD510_PRBS_CFG_9 0x1F, 0x0128
105 #define DP83TD510_PRBS_CFG_10 0x1F, 0x0129
106 #define DP83TD510_CRC_STATUS 0x1F, 0x012A
107 #define DP83TD510_PKT_STAT_1 0x1F, 0x012B
108 #define DP83TD510_PKT_STAT_2 0x1F, 0x012C
109 #define DP83TD510_PKT_STAT_3 0x1F, 0x012D
110 #define DP83TD510_PKT_STAT_4 0x1F, 0x012E
111 #define DP83TD510_PKT_STAT_5 0x1F, 0x012F
112 #define DP83TD510_PKT_STAT_6 0x1F, 0x0130
113 #define DP83TD510_TDR_CFG1 0x1F, 0x0300
114 #define DP83TD510_TDR_CFG2 0x1F, 0x0301
115 #define DP83TD510_TDR_CFG3 0x1F, 0x0302
116 #define DP83TD510_FAULT_CFG1 0x1F, 0x0303
117 #define DP83TD510_FAULT_CFG2 0x1F, 0x0304
118 #define DP83TD510_FAULT_STAT1 0x1F, 0x0305
119 #define DP83TD510_FAULT_STAT2 0x1F, 0x0306
120 #define DP83TD510_FAULT_STAT3 0x1F, 0x0307
121 #define DP83TD510_FAULT_STAT4 0x1F, 0x0308
122 #define DP83TD510_FAULT_STAT5 0x1F, 0x0309
123 #define DP83TD510_FAULT_STAT6 0x1F, 0x030A
124 #define DP83TD510_CHIP_SOR_0 0x1F, 0x0420
125 #define DP83TD510_LEDS_CFG_1 0x1F, 0x0460
126 #define DP83TD510_IO_MUX_CFG 0x1F, 0x0461
127 #define DP83TD510_IO_MUX_GPIO_CTRL_1 0x1F, 0x0462
128 #define DP83TD510_IO_MUX_GPIO_CTRL_2 0x1F, 0x0463
129 #define DP83TD510_CHIP_SOR_1 0x1F, 0x0467
130 #define DP83TD510_CHIP_SOR_2 0x1F, 0x0468
131 #define DP83TD510_LEDS_CFG_2 0x1F, 0x0469
132 #define DP83TD510_AN_STAT_1 0x1F, 0x060C
133 #define DP83TD510_DSP_REG_72 0x1F, 0x0872
134 #define DP83TD510_DSP_REG_8D 0x1F, 0x088D
135 #define DP83TD510_DSP_REG_8E 0x1F, 0x088E
136 #define DP83TD510_DSP_REG_8F 0x1F, 0x088F
137 #define DP83TD510_DSP_REG_90 0x1F, 0x0890
138 #define DP83TD510_DSP_REG_91 0x1F, 0x0891
139 #define DP83TD510_DSP_REG_92 0x1F, 0x0892
140 #define DP83TD510_DSP_REG_98 0x1F, 0x0898
141 #define DP83TD510_DSP_REG_99 0x1F, 0x0899
142 #define DP83TD510_DSP_REG_9A 0x1F, 0x089A
143 #define DP83TD510_DSP_REG_9B 0x1F, 0x089B
144 #define DP83TD510_DSP_REG_9C 0x1F, 0x089C
145 #define DP83TD510_DSP_REG_9D 0x1F, 0x089D
146 #define DP83TD510_DSP_REG_E9 0x1F, 0x08E9
147 #define DP83TD510_DSP_REG_EA 0x1F, 0x08EA
148 #define DP83TD510_DSP_REG_EB 0x1F, 0x08EB
149 #define DP83TD510_DSP_REG_EC 0x1F, 0x08EC
150 #define DP83TD510_DSP_REG_ED 0x1F, 0x08ED
151 #define DP83TD510_DSP_REG_EE 0x1F, 0x08EE
152 #define DP83TD510_MSE_DETECT 0x1F, 0x0A85
153 #define DP83TD510_ALCD_METRIC 0x1F, 0x0A9D
154 #define DP83TD510_ALCD_STATUS 0x1F, 0x0A9F
155 #define DP83TD510_SCAN_2 0x1F, 0x0E01
156 
157 //MII_REG_0 register
158 #define DP83TD510_MII_REG_0_MII_RESET 0x8000
159 #define DP83TD510_MII_REG_0_LOOPBACK 0x4000
160 #define DP83TD510_MII_REG_0_POWER_DOWN 0x0800
161 #define DP83TD510_MII_REG_0_ISOLATE 0x0400
162 #define DP83TD510_MII_REG_0_UNIDIRECTIONAL_ABILITY 0x0020
163 
164 //MII_REG_2 register
165 #define DP83TD510_MII_REG_2_OUI_21_16 0xFFFF
166 #define DP83TD510_MII_REG_2_OUI_21_16_DEFAULT 0x2000
167 
168 //MII_REG_3 register
169 #define DP83TD510_MII_REG_3_OUI_5_0 0xFC00
170 #define DP83TD510_MII_REG_3_OUI_5_0_DEFAULT 0x0000
171 #define DP83TD510_MII_REG_3_MODEL_NUMBER 0x03E0
172 #define DP83TD510_MII_REG_3_MODEL_NUMBER_DEFAULT 0x0180
173 #define DP83TD510_MII_REG_3_REVISION_NUMBER 0x001F
174 #define DP83TD510_MII_REG_3_REVISION_NUMBER_DEFAULT 0x0001
175 
176 //Register Control register
177 #define DP83TD510_REGCR_CMD 0xC000
178 #define DP83TD510_REGCR_CMD_ADDR 0x0000
179 #define DP83TD510_REGCR_CMD_DATA_NO_POST_INC 0x4000
180 #define DP83TD510_REGCR_CMD_DATA_POST_INC_RW 0x8000
181 #define DP83TD510_REGCR_CMD_DATA_POST_INC_W 0xC000
182 #define DP83TD510_REGCR_DEVAD 0x001F
183 
184 //PHY_STS register
185 #define DP83TD510_PHY_STS_MII_INTERRUPT 0x0080
186 #define DP83TD510_PHY_STS_LINK_STATUS 0x0001
187 
188 //GEN_CFG register
189 #define DP83TD510_GEN_CFG_CHANNEL_DEBUG_MODE 0x0800
190 #define DP83TD510_GEN_CFG_DEBUG_MODE 0x0400
191 #define DP83TD510_GEN_CFG_TX_FIFO_DEPTH 0x0060
192 #define DP83TD510_GEN_CFG_TX_FIFO_DEPTH_4_NIBBLES 0x0000
193 #define DP83TD510_GEN_CFG_TX_FIFO_DEPTH_5_NIBBLES 0x0020
194 #define DP83TD510_GEN_CFG_TX_FIFO_DEPTH_6_NIBBLES 0x0040
195 #define DP83TD510_GEN_CFG_TX_FIFO_DEPTH_8_NIBBLES 0x0060
196 #define DP83TD510_GEN_CFG_INT_POLARITY 0x0008
197 #define DP83TD510_GEN_CFG_INT_POLARITY_HIGH 0x0000
198 #define DP83TD510_GEN_CFG_INT_POLARITY_LOW 0x0008
199 #define DP83TD510_GEN_CFG_FORCE_INTERRUPT 0x0004
200 #define DP83TD510_GEN_CFG_INT_EN 0x0002
201 #define DP83TD510_GEN_CFG_INT_OE 0x0001
202 
203 //INTERRUPT_REG_1 register
204 #define DP83TD510_INTERRUPT_REG_1_RHF_INT 0x8000
205 #define DP83TD510_INTERRUPT_REG_1_LINK_INT 0x2000
206 #define DP83TD510_INTERRUPT_REG_1_ESD_INT 0x0800
207 #define DP83TD510_INTERRUPT_REG_1_RHF_INT_EN 0x0080
208 #define DP83TD510_INTERRUPT_REG_1_LINK_INT_EN 0x0020
209 #define DP83TD510_INTERRUPT_REG_1_ESD_INT_EN 0x0008
210 
211 //INTERRUPT_REG_2 register
212 #define DP83TD510_INTERRUPT_REG_2_PAGE_INT 0x2000
213 #define DP83TD510_INTERRUPT_REG_2_POL_INT 0x0200
214 #define DP83TD510_INTERRUPT_REG_2_PAGE_INT_EN 0x0020
215 #define DP83TD510_INTERRUPT_REG_2_POL_INT_EN 0x0002
216 
217 //RX_ERR_CNT register
218 #define DP83TD510_RX_ERR_CNT_RX_ERR_CNT 0xFFFF
219 
220 //BISCR register
221 #define DP83TD510_BISCR_CORE_PWR_MODE 0x0100
222 #define DP83TD510_BISCR_LOOPBACK_MODE 0x007F
223 #define DP83TD510_BISCR_LOOPBACK_MODE_PCS 0x0002
224 #define DP83TD510_BISCR_LOOPBACK_MODE_DIGITAL 0x0004
225 #define DP83TD510_BISCR_LOOPBACK_MODE_ANALOG 0x0008
226 #define DP83TD510_BISCR_LOOPBACK_MODE_REVERSE 0x0010
227 #define DP83TD510_BISCR_LOOPBACK_MODE_TX_TO_MAC_IN_REVERSE 0x0020
228 #define DP83TD510_BISCR_LOOPBACK_MODE_TX_TO_MDI_IN_MAC 0x0040
229 
230 //MAC_CFG_1 register
231 #define DP83TD510_MAC_CFG_1_CFG_RMII_DIS_DELAYED_TXD_EN 0x8000
232 #define DP83TD510_MAC_CFG_1_MIN_IPG_MODE_EN 0x4000
233 #define DP83TD510_MAC_CFG_1_CFG_RMII_ENH 0x2000
234 #define DP83TD510_MAC_CFG_1_CFG_RGMII_RX_CLK_SHIFT_SEL 0x1000
235 #define DP83TD510_MAC_CFG_1_CFG_RGMII_TX_CLK_SHIFT_SEL 0x0800
236 #define DP83TD510_MAC_CFG_1_CFG_RGMII_EN 0x0200
237 #define DP83TD510_MAC_CFG_1_CFG_RMII_CLK_SHIFT_EN 0x0100
238 #define DP83TD510_MAC_CFG_1_CFG_XI_50 0x0080
239 #define DP83TD510_MAC_CFG_1_CFG_RMII_SLOW_MODE 0x0040
240 #define DP83TD510_MAC_CFG_1_CFG_RMII_MODE 0x0020
241 #define DP83TD510_MAC_CFG_1_CFG_RMII_REV1_0 0x0010
242 #define DP83TD510_MAC_CFG_1_RMII_OVF_STS 0x0008
243 #define DP83TD510_MAC_CFG_1_RMII_UNF_STS 0x0004
244 #define DP83TD510_MAC_CFG_1_CFG_RMII_ELAST_BUF 0x0003
245 #define DP83TD510_MAC_CFG_1_CFG_RMII_ELAST_BUF_14_BIT_TOLERANCE 0x0000
246 #define DP83TD510_MAC_CFG_1_CFG_RMII_ELAST_BUF_2_BIT_TOLERANCE 0x0001
247 #define DP83TD510_MAC_CFG_1_CFG_RMII_ELAST_BUF_6_BIT_TOLERANCE 0x0002
248 #define DP83TD510_MAC_CFG_1_CFG_RMII_ELAST_BUF_10_BIT_TOLERANCE 0x0003
249 
250 //MAC_CFG_2 register
251 #define DP83TD510_MAC_CFG_2_CFG_INV_RX_CLK 0x0800
252 #define DP83TD510_MAC_CFG_2_CFG_RMII_CRS_DV_SEL 0x0400
253 #define DP83TD510_MAC_CFG_2_RGMII_TX_AF_EMPTY_ERR 0x0200
254 #define DP83TD510_MAC_CFG_2_RGMII_TX_AF_FULL_ERR 0x0100
255 #define DP83TD510_MAC_CFG_2_INV_RGMII_RXD 0x0020
256 #define DP83TD510_MAC_CFG_2_INV_RGMII_TXD 0x0010
257 #define DP83TD510_MAC_CFG_2_SUP_TX_ERR_FD_RGMII 0x0008
258 #define DP83TD510_MAC_CFG_2_CFG_RGMII_HALF_FULL_TH 0x0007
259 
260 //SOR_PHYAD register
261 #define DP83TD510_SOR_PHYAD_SOR_PHYADDR 0x001F
262 
263 //TDR_CFG register
264 #define DP83TD510_TDR_CFG_TDR_START 0x8000
265 #define DP83TD510_TDR_CFG_TDR_DONE 0x0002
266 #define DP83TD510_TDR_CFG_TDR_FAIL 0x0001
267 
268 //PAM_PMD_CTRL_1 register
269 #define DP83TD510_PAM_PMD_CTRL_1_PMA_RESET 0x8000
270 #define DP83TD510_PAM_PMD_CTRL_1_CFG_LOW_POWER 0x0800
271 #define DP83TD510_PAM_PMD_CTRL_1_PMA_LOOPBACK 0x0001
272 
273 //PMA_PMD_CTRL_2 register
274 #define DP83TD510_PMA_PMD_CTRL_2_CFG_PMA_TYPE_SELECTION 0x003F
275 #define DP83TD510_PMA_PMD_CTRL_2_CFG_PMA_TYPE_SELECTION_BASE_T1 0x003D
276 
277 //PMA_PMD_EXTENDED_ABILITY_2 register
278 #define DP83TD510_PMA_PMD_EXTENDED_ABILITY_2_BASE_T1_EXTENDED_ABILITIES 0x0800
279 
280 //PMA_PMD_EXTENDED_ABILITY register
281 #define DP83TD510_PMA_PMD_EXTENDED_ABILITY_MR_10_BASE_T1L_ABILITY 0x0004
282 
283 //PMA_PMD_CTRL register
284 #define DP83TD510_PMA_PMD_CTRL_CFG_MASTER_SLAVE_VAL 0x4000
285 #define DP83TD510_PMA_PMD_CTRL_CFG_TYPE_SELECTION 0x000F
286 #define DP83TD510_PMA_PMD_CTRL_CFG_TYPE_SELECTION_10BASE_T1L 0x0002
287 
288 //PMA_CTRL register
289 #define DP83TD510_PMA_CTRL_PMA_RESET 0x8000
290 #define DP83TD510_PMA_CTRL_CFG_TRANSMIT_DISABLE 0x4000
291 #define DP83TD510_PMA_CTRL_CFG_INCR_TX_LVL 0x1000
292 #define DP83TD510_PMA_CTRL_CFG_INCR_TX_LVL_1V0 0x0000
293 #define DP83TD510_PMA_CTRL_CFG_INCR_TX_LVL_2V4 0x1000
294 #define DP83TD510_PMA_CTRL_CFG_LOW_POWER 0x0800
295 #define DP83TD510_PMA_CTRL_CFG_EEE_ENABLE 0x0400
296 #define DP83TD510_PMA_CTRL_PMA_LOOPBACK 0x0001
297 
298 //PMA_STATUS register
299 #define DP83TD510_PMA_STATUS_LOOPBACK_ABILITY 0x2000
300 #define DP83TD510_PMA_STATUS_TX_LVL_INCR_ABILITY 0x1000
301 #define DP83TD510_PMA_STATUS_LOW_POWER_ABILITY 0x0800
302 #define DP83TD510_PMA_STATUS_EEE_ABILITY 0x0400
303 #define DP83TD510_PMA_STATUS_RECEIVE_FAULT_ABILITY 0x0200
304 #define DP83TD510_PMA_STATUS_RECEIVE_POLARITY 0x0004
305 #define DP83TD510_PMA_STATUS_RECEIVE_FAULT 0x0002
306 #define DP83TD510_PMA_STATUS_RECEIVE_LINK_STATUS 0x0001
307 
308 //TEST_MODE_CTRL register
309 #define DP83TD510_TEST_MODE_CTRL_CFG_TEST_MODE 0xE000
310 #define DP83TD510_TEST_MODE_CTRL_CFG_TEST_MODE_NORMAL 0x0000
311 #define DP83TD510_TEST_MODE_CTRL_CFG_TEST_MODE_1 0x2000
312 #define DP83TD510_TEST_MODE_CTRL_CFG_TEST_MODE_2 0x4000
313 #define DP83TD510_TEST_MODE_CTRL_CFG_TEST_MODE_3 0x6000
314 
315 //PCS_CTRL register
316 #define DP83TD510_PCS_CTRL_PCS_RESET 0x8000
317 #define DP83TD510_PCS_CTRL_MMD3_LOOPBACK 0x4000
318 
319 //PCS_CTRL_2 register
320 #define DP83TD510_PCS_CTRL_2_PCS_RESET 0x8000
321 #define DP83TD510_PCS_CTRL_2_MMD3_LOOPBACK 0x4000
322 
323 //PCS_STATUS register
324 #define DP83TD510_PCS_STATUS_TX_LPI_RECEIVED 0x0800
325 #define DP83TD510_PCS_STATUS_RX_LPI_RECEIVED 0x0400
326 #define DP83TD510_PCS_STATUS_TX_LPI_INDICATION 0x0200
327 #define DP83TD510_PCS_STATUS_RX_LPI_INDICATION 0x0100
328 #define DP83TD510_PCS_STATUS_FAULT 0x0080
329 #define DP83TD510_PCS_STATUS_RECEIVE_LINK_STATUS 0x0004
330 
331 //AN_CONTROL register
332 #define DP83TD510_AN_CONTROL_MR_MAIN_RESET 0x8000
333 #define DP83TD510_AN_CONTROL_MR_AN_ENABLE 0x1000
334 #define DP83TD510_AN_CONTROL_MR_RESTART_AN 0x0200
335 
336 //AN_STATUS register
337 #define DP83TD510_AN_STATUS_MR_PAGE_RECEIVED 0x0040
338 #define DP83TD510_AN_STATUS_MR_AN_COMPLETE 0x0020
339 #define DP83TD510_AN_STATUS_REMOTE_FAULT 0x0010
340 #define DP83TD510_AN_STATUS_MR_AN_ABILITY 0x0008
341 #define DP83TD510_AN_STATUS_LINK_STATUS 0x0004
342 
343 //AN_ADV_1 register
344 #define DP83TD510_AN_ADV_1_MR_BP_NP_ABILITY 0x8000
345 #define DP83TD510_AN_ADV_1_MR_BP_ACK 0x4000
346 #define DP83TD510_AN_ADV_1_MR_BP_REMOTE_FAULT 0x2000
347 #define DP83TD510_AN_ADV_1_MR_BP_12_5 0x1FE0
348 #define DP83TD510_AN_ADV_1_SELECTOR_FIELD 0x001F
349 
350 //AN_ADV_2 register
351 #define DP83TD510_AN_ADV_2_MR_BP_31_16 0xFFFF
352 
353 //AN_ADV_3 register
354 #define DP83TD510_AN_ADV_3_MR_BP_47_32 0xFFFF
355 
356 //AN_LP_ADV_1 register
357 #define DP83TD510_AN_LP_ADV_1_MR_LP_BP_15_0 0xFFFF
358 
359 //AN_LP_ADV_2 register
360 #define DP83TD510_AN_LP_ADV_2_MR_LP_BP_31_16 0xFFFF
361 
362 //AN_LP_ADV_3 register
363 #define DP83TD510_AN_LP_ADV_3_MR_LP_BP_47_32 0xFFFF
364 
365 //AN_NP_ADV_1 register
366 #define DP83TD510_AN_NP_ADV_1_MR_NP_NP_ABILITY 0x8000
367 #define DP83TD510_AN_NP_ADV_1_MR_NP_MESSAGE_PAGE 0x2000
368 #define DP83TD510_AN_NP_ADV_1_MR_NP_ACK2 0x1000
369 #define DP83TD510_AN_NP_ADV_1_MR_NP_TOGGLE 0x0800
370 #define DP83TD510_AN_NP_ADV_1_MR_NP_MSG_UNFORM_CODE_FIELD 0x07FF
371 
372 //AN_NP_ADV_2 register
373 #define DP83TD510_AN_NP_ADV_2_MR_NP_UNFORM_CODE_FIELD_1 0xFFFF
374 
375 //AN_NP_ADV_3 register
376 #define DP83TD510_AN_NP_ADV_3_MR_NP_UNFORM_CODE_FIELD_2 0xFFFF
377 
378 //AN_LP_NP_ADV_1 register
379 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_NP_ABILITY 0x8000
380 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_ACK 0x4000
381 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_MESSAGE_PAGE 0x2000
382 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_ACK2 0x1000
383 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_TOGGLE 0x0800
384 #define DP83TD510_AN_LP_NP_ADV_1_MR_LP_NP_MSG_UNFORM_CODE_FIELD 0x07FF
385 
386 //AN_LP_NP_ADV_2 register
387 #define DP83TD510_AN_LP_NP_ADV_2_MR_LP_NP_UNFORM_CODE_FIELD_1 0xFFFF
388 
389 //AN_LP_NP_ADV_3 register
390 #define DP83TD510_AN_LP_NP_ADV_3_MR_LP_NP_UNFORM_CODE_FIELD_2 0xFFFF
391 
392 //AN_CTRL_10BT1 register
393 #define DP83TD510_AN_CTRL_10BT1_MR_10BT1_L_CAPABILITY 0x8000
394 #define DP83TD510_AN_CTRL_10BT1_MR_ABILITY_10BT1_L_EEE 0x4000
395 #define DP83TD510_AN_CTRL_10BT1_MR_ABILITY_10BT1_L_INCR_TX_RX_LVL 0x2000
396 #define DP83TD510_AN_CTRL_10BT1_MR_10BT1_L_INCR_TX_RX_LVL_RQST 0x1000
397 
398 //AN_STATUS_10BT1 register
399 #define DP83TD510_AN_STATUS_10BT1_MR_LP_10BT1_L_CAPABILITY 0x8000
400 #define DP83TD510_AN_STATUS_10BT1_MR_LP_ABILITY_10BT1_L_EEE 0x4000
401 #define DP83TD510_AN_STATUS_10BT1_MR_LP_ABILITY_10BT1_L_INCR_TX_RX_LVL 0x2000
402 #define DP83TD510_AN_STATUS_10BT1_MR_LP_10BT1_L_INCR_TX_RX_LVL_RQST 0x1000
403 
404 //PRBS_CFG_1 register
405 #define DP83TD510_PRBS_CFG_1_SEND_PKT 0x1000
406 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_SEL 0x0700
407 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_SEL_RGMII_TX 0x0000
408 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_SEL_RMII_TX 0x0200
409 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_SEL_MII_TX 0x0300
410 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_SEL_CU_RX 0x0500
411 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_GEN_SEL 0x0070
412 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_GEN_SEL_RGMII_RX 0x0000
413 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_GEN_SEL_RMII_RX 0x0020
414 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_GEN_SEL_MII_RX 0x0030
415 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_GEN_SEL_CU_TX 0x0040
416 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CNT_MODE 0x0008
417 #define DP83TD510_PRBS_CFG_1_CFG_PRBS_CHK_ENABLE 0x0004
418 #define DP83TD510_PRBS_CFG_1_CFG_PKT_GEN_PRBS 0x0002
419 #define DP83TD510_PRBS_CFG_1_PKT_GEN_EN 0x0001
420 
421 //PRBS_CFG_2 register
422 #define DP83TD510_PRBS_CFG_2_CFG_PKT_LEN_PRBS 0xFFFF
423 
424 //PRBS_CFG_3 register
425 #define DP83TD510_PRBS_CFG_3_CFG_PRBS_FIX_PATT_EN 0x1000
426 #define DP83TD510_PRBS_CFG_3_CFG_PRBS_FIX_PATT 0x0F00
427 #define DP83TD510_PRBS_CFG_3_CFG_IPG_LEN 0x00FF
428 
429 //PRBS_STATUS_1 register
430 #define DP83TD510_PRBS_STATUS_1_PRBS_BYTE_CNT 0xFFFF
431 
432 //PRBS_STATUS_2 register
433 #define DP83TD510_PRBS_STATUS_2_PRBS_PKT_CNT_15_0 0xFFFF
434 
435 //PRBS_STATUS_3 register
436 #define DP83TD510_PRBS_STATUS_3_PRBS_PKT_CNT_31_16 0xFFFF
437 
438 //PRBS_STATUS_4 register
439 #define DP83TD510_PRBS_STATUS_4_PRBS_SYNC_LOSS 0x2000
440 #define DP83TD510_PRBS_STATUS_4_PKT_DONE 0x1000
441 #define DP83TD510_PRBS_STATUS_4_PKT_GEN_BUSY 0x0800
442 #define DP83TD510_PRBS_STATUS_4_PRBS_PKT_OV 0x0400
443 #define DP83TD510_PRBS_STATUS_4_PRBS_BYTE_OV 0x0200
444 #define DP83TD510_PRBS_STATUS_4_PRBS_LOCK 0x0100
445 #define DP83TD510_PRBS_STATUS_4_PRBS_ERR_CNT 0x00FF
446 
447 //PRBS_STATUS_5 register
448 #define DP83TD510_PRBS_STATUS_5_PRBS_ERR_OV_CNT 0x00FF
449 
450 //PRBS_STATUS_6 register
451 #define DP83TD510_PRBS_STATUS_6_PKT_ERR_CNT_15_0 0xFFFF
452 
453 //PRBS_STATUS_7 register
454 #define DP83TD510_PRBS_STATUS_7_PKT_ERR_CNT_31_16 0xFFFF
455 
456 //PRBS_CFG_4 register
457 #define DP83TD510_PRBS_CFG_4_PKT_ERR_CNT_31_16 0xFF00
458 #define DP83TD510_PRBS_CFG_4_CFG_PKT_MODE 0x00C0
459 #define DP83TD510_PRBS_CFG_4_CFG_PATTERN_VLD_BYTES 0x0038
460 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT 0x0007
461 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_1_PKT 0x0000
462 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_10_PKTS 0x0001
463 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_100_PKTS 0x0002
464 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_1000_PKTS 0x0003
465 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_10000_PKTS 0x0004
466 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_100000_PKTS 0x0005
467 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_1000000_PKTS 0x0006
468 #define DP83TD510_PRBS_CFG_4_CFG_PKT_CNT_CONTINUOUS_PKTS 0x0007
469 
470 //PRBS_CFG_5 register
471 #define DP83TD510_PRBS_CFG_5_PATTERN_15_0 0xFFFF
472 
473 //PRBS_CFG_6 register
474 #define DP83TD510_PRBS_CFG_6_PATTERN_31_16 0xFFFF
475 
476 //PRBS_CFG_7 register
477 #define DP83TD510_PRBS_CFG_7_PATTERN_47_32 0xFFFF
478 
479 //PRBS_CFG_8 register
480 #define DP83TD510_PRBS_CFG_8_PMATCH_DATA_15_0 0xFFFF
481 
482 //PRBS_CFG_9 register
483 #define DP83TD510_PRBS_CFG_9_PMATCH_DATA_31_16 0xFFFF
484 
485 //PRBS_CFG_10 register
486 #define DP83TD510_PRBS_CFG_10_PMATCH_DATA_47_32 0xFFFF
487 
488 //CRC_STATUS register
489 #define DP83TD510_CRC_STATUS_RX_BAD_CRC 0x0002
490 #define DP83TD510_CRC_STATUS_TX_BAD_CRC 0x0001
491 
492 //PKT_STAT_1 register
493 #define DP83TD510_PKT_STAT_1_TX_PKT_CNT_15_0 0xFFFF
494 
495 //PKT_STAT_2 register
496 #define DP83TD510_PKT_STAT_2_TX_PKT_CNT_31_16 0xFFFF
497 
498 //PKT_STAT_3 register
499 #define DP83TD510_PKT_STAT_3_TX_ERR_PKT_CNT 0xFFFF
500 
501 //PKT_STAT_4 register
502 #define DP83TD510_PKT_STAT_4_RX_PKT_CNT_15_0 0xFFFF
503 
504 //PKT_STAT_5 register
505 #define DP83TD510_PKT_STAT_5_RX_PKT_CNT_31_16 0xFFFF
506 
507 //PKT_STAT_6 register
508 #define DP83TD510_PKT_STAT_6_RX_ERR_PKT_CNT 0xFFFF
509 
510 //TDR_CFG1 register
511 #define DP83TD510_TDR_CFG1_CFG_TDR_TX_TYPE 0x1000
512 #define DP83TD510_TDR_CFG1_CFG_TDR_TX_TYPE_1V0 0x0000
513 #define DP83TD510_TDR_CFG1_CFG_TDR_TX_TYPE_2V4 0x1000
514 #define DP83TD510_TDR_CFG1_CFG_FORWARD_SHADOW_2 0x0F00
515 #define DP83TD510_TDR_CFG1_CFG_FORWARD_SHADOW_1 0x00F0
516 #define DP83TD510_TDR_CFG1_CFG_POST_SILENCE_TIME 0x000C
517 #define DP83TD510_TDR_CFG1_CFG_PRE_SILENCE_TIME 0x0003
518 
519 //TDR_CFG2 register
520 #define DP83TD510_TDR_CFG2_CFG_END_TAP_INDEX_1 0x7F00
521 #define DP83TD510_TDR_CFG2_CFG_START_TAP_INDEX_1 0x007F
522 
523 //TDR_CFG3 register
524 #define DP83TD510_TDR_CFG3_CFG_TDR_TX_DURATION 0xFFFF
525 
526 //FAULT_CFG1 register
527 #define DP83TD510_FAULT_CFG1_CFG_TDR_FLT_LOC_OFFSET_1 0x7F00
528 #define DP83TD510_FAULT_CFG1_CFG_TDR_FLT_INIT_1 0x00FF
529 
530 //FAULT_CFG2 register
531 #define DP83TD510_FAULT_CFG2_CFG_TDR_FLT_SLOPE_1 0x00FF
532 
533 //FAULT_STAT1 register
534 #define DP83TD510_FAULT_STAT1_PEAKS_LOC_1 0x7F00
535 #define DP83TD510_FAULT_STAT1_PEAKS_LOC_0 0x007F
536 
537 //FAULT_STAT2 register
538 #define DP83TD510_FAULT_STAT2_PEAKS_LOC_3 0x7F00
539 #define DP83TD510_FAULT_STAT2_PEAKS_LOC_2 0x007F
540 
541 //FAULT_STAT3 register
542 #define DP83TD510_FAULT_STAT3_PEAKS_AMP_0 0xFF00
543 #define DP83TD510_FAULT_STAT3_PEAKS_LOC_4 0x007F
544 
545 //FAULT_STAT4 register
546 #define DP83TD510_FAULT_STAT4_PEAKS_AMP_2 0xFF00
547 #define DP83TD510_FAULT_STAT4_PEAKS_AMP_1 0x00FF
548 
549 //FAULT_STAT5 register
550 #define DP83TD510_FAULT_STAT5_PEAKS_AMP_1 0xFF00
551 #define DP83TD510_FAULT_STAT5_PEAKS_AMP_3 0x00FF
552 
553 //FAULT_STAT6 register
554 #define DP83TD510_FAULT_STAT6_PEAKS_SIGN_4 0x0010
555 #define DP83TD510_FAULT_STAT6_PEAKS_SIGN_3 0x0008
556 #define DP83TD510_FAULT_STAT6_PEAKS_SIGN_2 0x0004
557 #define DP83TD510_FAULT_STAT6_PEAKS_SIGN_1 0x0002
558 #define DP83TD510_FAULT_STAT6_PEAKS_SIGN_0 0x0001
559 
560 //CHIP_SOR_0 register
561 #define DP83TD510_CHIP_SOR_0_READ_STRAP_TERM_SL 0x0040
562 
563 //LEDS_CFG_1 register
564 #define DP83TD510_LEDS_CFG_1_LEDS_BYPASS_STRETCHING 0x4000
565 #define DP83TD510_LEDS_CFG_1_LEDS_BLINK_RATE 0x3000
566 #define DP83TD510_LEDS_CFG_1_LEDS_BLINK_RATE_20HZ 0x0000
567 #define DP83TD510_LEDS_CFG_1_LEDS_BLINK_RATE_10HZ 0x1000
568 #define DP83TD510_LEDS_CFG_1_LEDS_BLINK_RATE_5HZ 0x2000
569 #define DP83TD510_LEDS_CFG_1_LEDS_BLINK_RATE_2HZ 0x3000
570 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION 0x0F00
571 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_LINK_OK 0x0000
572 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_TX_RX_ACT 0x0100
573 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_TX_ACT 0x0200
574 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_RX_ACT 0x0300
575 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_LR 0x0400
576 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_SR 0x0500
577 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_SPEED 0x0600
578 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_DUPLEX 0x0700
579 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_LINK_ACT_BLINK 0x0800
580 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_TX_RX_ACT_BLINK 0x0900
581 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_TX_BLINK 0x0A00
582 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_RX_BLINK 0x0B00
583 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_LINK_LOST 0x0C00
584 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_PRBS_ERROR 0x0D00
585 #define DP83TD510_LEDS_CFG_1_LED_2_OPTION_XMII_TX_RX_ERROR 0x0E00
586 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION 0x00F0
587 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_LINK_OK 0x0000
588 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_TX_RX_ACT 0x0010
589 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_TX_ACT 0x0020
590 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_RX_ACT 0x0030
591 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_LR 0x0040
592 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_SR 0x0050
593 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_SPEED 0x0060
594 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_DUPLEX 0x0070
595 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_LINK_ACT_BLINK 0x0080
596 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_TX_RX_ACT_BLINK 0x0090
597 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_TX_BLINK 0x00A0
598 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_RX_BLINK 0x00B0
599 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_LINK_LOST 0x00C0
600 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_PRBS_ERROR 0x00D0
601 #define DP83TD510_LEDS_CFG_1_LED_1_OPTION_XMII_TX_RX_ERROR 0x00E0
602 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION 0x000F
603 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_LINK_OK 0x0000
604 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_TX_RX_ACT 0x0001
605 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_TX_ACT 0x0002
606 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_RX_ACT 0x0003
607 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_LR 0x0004
608 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_SR 0x0005
609 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_SPEED 0x0006
610 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_DUPLEX 0x0007
611 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_LINK_ACT_BLINK 0x0008
612 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_TX_RX_ACT_BLINK 0x0009
613 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_TX_BLINK 0x000A
614 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_RX_BLINK 0x000B
615 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_LINK_LOST 0x000C
616 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_PRBS_ERROR 0x000D
617 #define DP83TD510_LEDS_CFG_1_LED_0_OPTION_XMII_TX_RX_ERROR 0x000E
618 
619 //IO_MUX_CFG register
620 #define DP83TD510_IO_MUX_CFG_IO_OE_N_VALUE 0x8000
621 #define DP83TD510_IO_MUX_CFG_IO_OE_N_VALUE_OUTPUT 0x0000
622 #define DP83TD510_IO_MUX_CFG_IO_OE_N_VALUE_INPUT 0x8000
623 #define DP83TD510_IO_MUX_CFG_IO_OE_N_FORCE_CTRL 0x4000
624 #define DP83TD510_IO_MUX_CFG_PUPD_VALUE 0x3000
625 #define DP83TD510_IO_MUX_CFG_PUPD_FORCE_CNTL 0x0800
626 #define DP83TD510_IO_MUX_CFG_IMPEDANCE_CTRL 0x0030
627 #define DP83TD510_IO_MUX_CFG_MAC_RX_IMPEDANCE_CTRL 0x000C
628 #define DP83TD510_IO_MUX_CFG_MAC_TX_IMPEDANCE_CTRL 0x0003
629 
630 //IO_MUX_GPIO_CTRL_1 register
631 #define DP83TD510_IO_MUX_GPIO_CTRL_1_MAC_TX_IMPEDANCE_CTRL 0x8000
632 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE 0x7000
633 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_XI_CLK 0x0000
634 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_LD_30MHZ_CLK 0x1000
635 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_30MHZ_ADC_CLK 0x2000
636 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_FREE_60MHZ_CLK 0x3000
637 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_7_5MHZ_CLK 0x4000
638 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_25MHZ_CLK 0x5000
639 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_SOURCE_2_5MHZ_CLK 0x6000
640 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_CLK_INV_EN 0x0800
641 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL 0x0700
642 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL_LED_2 0x0000
643 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL_CLK_OUT 0x0100
644 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL_INTERRUPT 0x0200
645 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL_LOW 0x0600
646 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_2_GPIO_CTRL_HIGH 0x0700
647 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_DIV_2_EN 0x0080
648 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE 0x0070
649 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_XI_CLK 0x0000
650 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_LD_30MHZ_CLK 0x0010
651 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_30MHZ_ADC_CLK 0x0020
652 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_FREE_60MHZ_CLK 0x0030
653 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_7_5MHZ_CLK 0x0040
654 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_25MHZ_CLK 0x0050
655 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_SOURCE_2_5MHZ_CLK 0x0060
656 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_CLK_INV_EN 0x0008
657 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL 0x0007
658 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL_LED_0 0x0000
659 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL_CLK_OUT 0x0001
660 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL_INTERRUPT 0x0002
661 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL_LOW 0x0006
662 #define DP83TD510_IO_MUX_GPIO_CTRL_1_LED_0_GPIO_CTRL_HIGH 0x0007
663 
664 //IO_MUX_GPIO_CTRL_2 register
665 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE 0xE000
666 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_XI_CLK 0x0000
667 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_LD_30MHZ_CLK 0x2000
668 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_30MHZ_ADC_CLK 0x4000
669 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_FREE_60MHZ_CLK 0x6000
670 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_7_5MHZ_CLK 0x8000
671 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_25MHZ_CLK 0xA000
672 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CLK_SOURCE_2_5MHZ_CLK 0xC000
673 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL 0x1C00
674 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL_LED_1 0x0000
675 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL_CLK_OUT 0x0400
676 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL_INTERRUPT 0x0800
677 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL_LOW 0x1800
678 #define DP83TD510_IO_MUX_GPIO_CTRL_2_GPIO_CTRL_HIGH 0x1C00
679 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CFG_TX_ER_ON_LED2 0x0200
680 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_DIV_2_EN 0x0100
681 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE 0x00F0
682 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_XI_CLK 0x0000
683 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_LD_30MHZ_CLK 0x0010
684 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_30MHZ_ADC_CLK 0x0020
685 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_FREE_60MHZ_CLK 0x0030
686 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_7_5MHZ_CLK 0x0040
687 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_25MHZ_CLK 0x0050
688 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_2_5MHZ_CLK 0x0060
689 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_25_50MHZ_CLK 0x0080
690 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_RMII_RX_50MHz_CLK 0x0090
691 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_RMII_TX_50MHZ_CLK 0x00A0
692 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_MII_RX_CLK 0x00B0
693 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_RGMII_RX_ALIGN_CLK 0x00C0
694 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_SOURCE_RGMII_RX_SHIFT_CLK 0x00D0
695 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_CLK_INV_EN 0x0008
696 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL 0x0007
697 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL_LED_1 0x0000
698 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL_CLK_OUT 0x0001
699 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL_INTERRUPT 0x0002
700 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL_LOW 0x0006
701 #define DP83TD510_IO_MUX_GPIO_CTRL_2_CLK_O_GPIO_CTRL_HIGH 0x0007
702 
703 //CHIP_SOR_1 register
704 #define DP83TD510_CHIP_SOR_1_SOR_15_0 0xFFFF
705 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_D3 0x0001
706 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_D2 0x0002
707 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_D1 0x0004
708 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_D0 0x0008
709 #define DP83TD510_CHIP_SOR_1_SOR_15_0_CLK_OUT_LED_1 0x0010
710 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_CTRL 0x0020
711 #define DP83TD510_CHIP_SOR_1_SOR_15_0_RX_ER 0x0040
712 #define DP83TD510_CHIP_SOR_1_SOR_15_0_LED_2 0x0080
713 #define DP83TD510_CHIP_SOR_1_SOR_15_0_LED_0 0x0100
714 #define DP83TD510_CHIP_SOR_1_SOR_15_0_GPIO 0x0200
715 
716 //CHIP_SOR_2 register
717 #define DP83TD510_CHIP_SOR_2_SOR_19_16 0x000F
718 
719 //LEDS_CFG_2 register
720 #define DP83TD510_LEDS_CFG_2_LED_2_POLARITY 0x0400
721 #define DP83TD510_LEDS_CFG_2_LED_2_POLARITY_LOW 0x0000
722 #define DP83TD510_LEDS_CFG_2_LED_2_POLARITY_HIGH 0x0400
723 #define DP83TD510_LEDS_CFG_2_LED_2_DRV_VAL 0x0200
724 #define DP83TD510_LEDS_CFG_2_LED_2_DRV_EN 0x0100
725 #define DP83TD510_LEDS_CFG_2_LED_1_POLARITY 0x0040
726 #define DP83TD510_LEDS_CFG_2_LED_1_POLARITY_LOW 0x0000
727 #define DP83TD510_LEDS_CFG_2_LED_1_POLARITY_HIGH 0x0040
728 #define DP83TD510_LEDS_CFG_2_LED_1_DRV_VAL 0x0020
729 #define DP83TD510_LEDS_CFG_2_LED_1_DRV_EN 0x0010
730 #define DP83TD510_LEDS_CFG_2_LED_0_POLARITY 0x0004
731 #define DP83TD510_LEDS_CFG_2_LED_0_POLARITY_LOW 0x0000
732 #define DP83TD510_LEDS_CFG_2_LED_0_POLARITY_HIGH 0x0004
733 #define DP83TD510_LEDS_CFG_2_LED_0_DRV_VAL 0x0002
734 #define DP83TD510_LEDS_CFG_2_LED_0_DRV_EN 0x0001
735 
736 //AN_STAT_1 register
737 #define DP83TD510_AN_STAT_1_MASTER_SLAVE_RESOL_FAIL 0x8000
738 #define DP83TD510_AN_STAT_1_AN_STATE 0x7000
739 #define DP83TD510_AN_STAT_1_HD_STATE 0x0700
740 #define DP83TD510_AN_STAT_1_RX_STATE 0x0070
741 #define DP83TD510_AN_STAT_1_AN_TX_STATE 0x000F
742 
743 //DSP_REG_72 register
744 #define DP83TD510_DSP_REG_72_MSE_SQI 0x03FF
745 
746 //DSP_REG_8D register
747 #define DP83TD510_DSP_REG_8D_CFG_ALCD_2P4_METRIC_STEP_1 0x0FFF
748 
749 //DSP_REG_8E register
750 #define DP83TD510_DSP_REG_8E_CFG_ALCD_2P4_METRIC_STEP_2 0x0FFF
751 
752 //DSP_REG_8F register
753 #define DP83TD510_DSP_REG_8F_CFG_ALCD_2P4_METRIC_STEP_3 0x0FFF
754 
755 //DSP_REG_90 register
756 #define DP83TD510_DSP_REG_90_CFG_ALCD_2P4_METRIC_STEP_4 0x0FFF
757 
758 //DSP_REG_91 register
759 #define DP83TD510_DSP_REG_91_CFG_ALCD_2P4_METRIC_STEP_5 0x0FFF
760 
761 //DSP_REG_92 register
762 #define DP83TD510_DSP_REG_92_CFG_ALCD_2P4_METRIC_STEP_6 0x0FFF
763 
764 //DSP_REG_98 register
765 #define DP83TD510_DSP_REG_98_CFG_ALCD_1P0_METRIC_STEP_1 0x0FFF
766 
767 //DSP_REG_99 register
768 #define DP83TD510_DSP_REG_99_CFG_ALCD_1P0_METRIC_STEP_2 0x0FFF
769 
770 //DSP_REG_9A register
771 #define DP83TD510_DSP_REG_9A_CFG_ALCD_1P0_METRIC_STEP_3 0x0FFF
772 
773 //DSP_REG_9B register
774 #define DP83TD510_DSP_REG_9B_CFG_ALCD_1P0_METRIC_STEP_4 0x0FFF
775 
776 //DSP_REG_9C register
777 #define DP83TD510_DSP_REG_9C_CFG_ALCD_1P0_METRIC_STEP_5 0x0FFF
778 
779 //DSP_REG_9D register
780 #define DP83TD510_DSP_REG_9D_CFG_ALCD_1P0_METRIC_STEP_6 0x0FFF
781 
782 //DSP_REG_E9 register
783 #define DP83TD510_DSP_REG_E9_CFG_ALCD_CABLE_0 0x00FF
784 
785 //DSP_REG_EA register
786 #define DP83TD510_DSP_REG_EA_CFG_ALCD_CABLE_1 0x00FF
787 
788 //DSP_REG_EB register
789 #define DP83TD510_DSP_REG_EB_CFG_ALCD_CABLE_2 0x00FF
790 
791 //DSP_REG_EC register
792 #define DP83TD510_DSP_REG_EC_CFG_ALCD_CABLE_3 0x00FF
793 
794 //DSP_REG_ED register
795 #define DP83TD510_DSP_REG_ED_CFG_ALCD_CABLE_4 0x00FF
796 
797 //DSP_REG_EE register
798 #define DP83TD510_DSP_REG_EE_CFG_ALCD_CABLE_5 0x00FF
799 
800 //MSE_DETECT register
801 #define DP83TD510_MSE_DETECT_SQI 0xFFFF
802 #define DP83TD510_MSE_DETECT_SQI_GOOD 0x0320
803 #define DP83TD510_MSE_DETECT_SQI_POOR 0x0660
804 
805 //ALCD_METRIC register
806 #define DP83TD510_ALCD_METRIC_ALCD_METRIC_VALUE 0xFFF0
807 
808 //ALCD_STATUS register
809 #define DP83TD510_ALCD_STATUS_ALCD_COMPLETE 0x8000
810 #define DP83TD510_ALCD_STATUS_ALCD_CABLE_LENGTH 0x07FF
811 
812 //SCAN_2 register
813 #define DP83TD510_SCAN_2_SCAN_STATE_SAF 0x01F0
814 #define DP83TD510_SCAN_2_CFG_EN_EFUSE_BURN 0x0008
815 
816 //C++ guard
817 #ifdef __cplusplus
818 extern "C" {
819 #endif
820 
821 //DP83TD510 Ethernet PHY driver
822 extern const PhyDriver dp83td510PhyDriver;
823 
824 //DP83TD510 related functions
826 void dp83td510InitHook(NetInterface *interface);
827 
828 void dp83td510Tick(NetInterface *interface);
829 
830 void dp83td510EnableIrq(NetInterface *interface);
831 void dp83td510DisableIrq(NetInterface *interface);
832 
833 void dp83td510EventHandler(NetInterface *interface);
834 
835 void dp83td510WritePhyReg(NetInterface *interface, uint8_t address,
836  uint16_t data);
837 
838 uint16_t dp83td510ReadPhyReg(NetInterface *interface, uint8_t address);
839 
840 void dp83td510DumpPhyReg(NetInterface *interface);
841 
842 void dp83td510WriteMmdReg(NetInterface *interface, uint8_t devAddr,
843  uint16_t regAddr, uint16_t data);
844 
845 uint16_t dp83td510ReadMmdReg(NetInterface *interface, uint8_t devAddr,
846  uint16_t regAddr);
847 
848 //C++ guard
849 #ifdef __cplusplus
850 }
851 #endif
852 
853 #endif
void dp83td510EnableIrq(NetInterface *interface)
Enable interrupts.
error_t dp83td510Init(NetInterface *interface)
DP83TD510 PHY transceiver initialization.
void dp83td510DisableIrq(NetInterface *interface)
Disable interrupts.
void dp83td510EventHandler(NetInterface *interface)
DP83TD510 event handler.
void dp83td510WriteMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
void dp83td510InitHook(NetInterface *interface)
DP83TD510 custom configuration.
void dp83td510WritePhyReg(NetInterface *interface, uint8_t address, uint16_t data)
Write PHY register.
uint16_t dp83td510ReadMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
void dp83td510DumpPhyReg(NetInterface *interface)
Dump PHY registers for debugging purpose.
void dp83td510Tick(NetInterface *interface)
DP83TD510 timer handler.
uint16_t dp83td510ReadPhyReg(NetInterface *interface, uint8_t address)
Read PHY register.
const PhyDriver dp83td510PhyDriver
DP83TD510 Ethernet PHY driver.
error_t
Error codes.
Definition: error.h:43
uint8_t data[]
Definition: ethernet.h:222
Ipv6Addr address[]
Definition: ipv6.h:316
uint16_t regAddr
#define NetInterface
Definition: net.h:36
Network interface controller abstraction layer.
Ethernet PHY driver.
Definition: nic.h:308