adin2111_driver.h
Go to the documentation of this file.
1 /**
2  * @file adin2111_driver.h
3  * @brief ADIN2111 2-port 10Base-T1L Ethernet switch driver
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2026 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.6.6
29  **/
30 
31 #ifndef _ADIN2111_DRIVER_H
32 #define _ADIN2111_DRIVER_H
33 
34 //Dependencies
35 #include "core/nic.h"
36 
37 //Open Alliance SPI protocol
38 #ifndef ADIN2111_OA_SPI_SUPPORT
39  #define ADIN2111_OA_SPI_SUPPORT DISABLED
40 #elif (ADIN2111_OA_SPI_SUPPORT != ENABLED && ADIN2111_OA_SPI_SUPPORT != DISABLED)
41  #error ADIN2111_OA_SPI_SUPPORT parameter is not valid
42 #endif
43 
44 //Control data protection
45 #ifndef ADIN2111_PROTECTION_SUPPORT
46  #define ADIN2111_PROTECTION_SUPPORT DISABLED
47 #elif (ADIN2111_PROTECTION_SUPPORT != ENABLED && ADIN2111_PROTECTION_SUPPORT != DISABLED)
48  #error ADIN2111_PROTECTION_SUPPORT parameter is not valid
49 #endif
50 
51 //TX buffer size
52 #ifndef ADIN2111_ETH_TX_BUFFER_SIZE
53  #define ADIN2111_ETH_TX_BUFFER_SIZE 1536
54 #elif (ADIN2111_ETH_TX_BUFFER_SIZE != 1536)
55  #error ADIN2111_ETH_TX_BUFFER_SIZE parameter is not valid
56 #endif
57 
58 //RX buffer size
59 #ifndef ADIN2111_ETH_RX_BUFFER_SIZE
60  #define ADIN2111_ETH_RX_BUFFER_SIZE 1536
61 #elif (ADIN2111_ETH_RX_BUFFER_SIZE != 1536)
62  #error ADIN2111_ETH_RX_BUFFER_SIZE parameter is not valid
63 #endif
64 
65 //Port identifiers
66 #define ADIN2111_PORT1 1
67 #define ADIN2111_PORT2 2
68 
69 //Size of the MAC address filtering table
70 #define ADIN2111_ADDR_TABLE_SIZE 16
71 
72 //Frame header size
73 #define ADIN2111_FRAME_HEADER_SIZE 2
74 
75 //TX FIFO overhead
76 #define ADIN2111_TX_FIFO_OVERHEAD 7
77 
78 //Chunk header size
79 #define ADIN2111_CHUNK_HEADER_SIZE 4
80 //Chunk payload size
81 #define ADIN2111_CHUNK_PAYLOAD_SIZE 64
82 //Chunk size
83 #define ADIN2111_CHUNK_SIZE 68
84 
85 //SPI commands
86 #define ADIN2111_SPI_CMD_READ 0x80
87 #define ADIN2111_SPI_CMD_WRITE 0xA0
88 
89 //Frame header
90 #define ADIN2111_FRAME_HEADER_PRIORITY 0x4000
91 #define ADIN2111_FRAME_HEADER_EG_CAPTURE 0x00C0
92 #define ADIN2111_FRAME_HEADER_EG_CAPTURE_A 0x0040
93 #define ADIN2111_FRAME_HEADER_EG_CAPTURE_B 0x0080
94 #define ADIN2111_FRAME_HEADER_EG_CAPTURE_C 0x00C0
95 #define ADIN2111_FRAME_HEADER_TS_PARITY 0x0008
96 #define ADIN2111_FRAME_HEADER_TS_PRESENT 0x0004
97 #define ADIN2111_FRAME_HEADER_PORT1 0x0000
98 #define ADIN2111_FRAME_HEADER_PORT2 0x0001
99 
100 //Transmit data header
101 #define ADIN2111_TX_HEADER_DNC 0x80000000
102 #define ADIN2111_TX_HEADER_SEQ 0x40000000
103 #define ADIN2111_TX_HEADER_NORX 0x20000000
104 #define ADIN2111_TX_HEADER_VS1 0x00800000
105 #define ADIN2111_TX_HEADER_VS0 0x00400000
106 #define ADIN2111_TX_HEADER_VS0_PORT1 0x00000000
107 #define ADIN2111_TX_HEADER_VS0_PORT2 0x00400000
108 #define ADIN2111_TX_HEADER_DV 0x00200000
109 #define ADIN2111_TX_HEADER_SV 0x00100000
110 #define ADIN2111_TX_HEADER_SWO 0x000F0000
111 #define ADIN2111_TX_HEADER_EV 0x00004000
112 #define ADIN2111_TX_HEADER_EBO 0x00003F00
113 #define ADIN2111_TX_HEADER_TSC 0x000000C0
114 #define ADIN2111_TX_HEADER_TSC_NO_ACTION 0x00000000
115 #define ADIN2111_TX_HEADER_TSC_TTSCA 0x00000040
116 #define ADIN2111_TX_HEADER_TSC_TTSCB 0x00000080
117 #define ADIN2111_TX_HEADER_TSC_TTSCC 0x000000C0
118 #define ADIN2111_TX_HEADER_P 0x00000001
119 
120 //Receive data footer
121 #define ADIN2111_RX_FOOTER_EXST 0x80000000
122 #define ADIN2111_RX_FOOTER_HDRB 0x40000000
123 #define ADIN2111_RX_FOOTER_SYNC 0x20000000
124 #define ADIN2111_RX_FOOTER_RCA 0x1F000000
125 #define ADIN2111_RX_FOOTER_VS1 0x00800000
126 #define ADIN2111_RX_FOOTER_VS1_LOW_PRIO 0x00000000
127 #define ADIN2111_RX_FOOTER_VS1_HIGH_PRIO 0x00800000
128 #define ADIN2111_RX_FOOTER_VS0 0x00400000
129 #define ADIN2111_RX_FOOTER_VS0_PORT1 0x00000000
130 #define ADIN2111_RX_FOOTER_VS0_PORT2 0x00400000
131 #define ADIN2111_RX_FOOTER_DV 0x00200000
132 #define ADIN2111_RX_FOOTER_SV 0x00100000
133 #define ADIN2111_RX_FOOTER_SWO 0x000F0000
134 #define ADIN2111_RX_FOOTER_FD 0x00008000
135 #define ADIN2111_RX_FOOTER_EV 0x00004000
136 #define ADIN2111_RX_FOOTER_EBO 0x00003F00
137 #define ADIN2111_RX_FOOTER_RTSA 0x00000080
138 #define ADIN2111_RX_FOOTER_RTSP 0x00000040
139 #define ADIN2111_RX_FOOTER_TXC 0x0000003E
140 #define ADIN2111_RX_FOOTER_P 0x00000001
141 
142 //Control command header
143 #define ADIN2111_CTRL_HEADER_DNC 0x80000000
144 #define ADIN2111_CTRL_HEADER_HDRB 0x40000000
145 #define ADIN2111_CTRL_HEADER_WNR 0x20000000
146 #define ADIN2111_CTRL_HEADER_AID 0x10000000
147 #define ADIN2111_CTRL_HEADER_MMS 0x0F000000
148 #define ADIN2111_CTRL_HEADER_ADDR 0x00FFFF00
149 #define ADIN2111_CTRL_HEADER_LEN 0x000000FE
150 #define ADIN2111_CTRL_HEADER_P 0x00000001
151 
152 //Memory map selectors
153 #define ADIN2111_MMS_STD 0x00
154 #define ADIN2111_MMS_MAC 0x01
155 
156 //ADIN2111 MAC registers
157 #define ADIN2111_IDVER 0x00
158 #define ADIN2111_PHYID 0x01
159 #define ADIN2111_CAPABILITY 0x02
160 #define ADIN2111_RESET 0x03
161 #define ADIN2111_CONFIG0 0x04
162 #define ADIN2111_CONFIG2 0x06
163 #define ADIN2111_STATUS0 0x08
164 #define ADIN2111_STATUS1 0x09
165 #define ADIN2111_BUFSTS 0x0B
166 #define ADIN2111_IMASK0 0x0C
167 #define ADIN2111_IMASK1 0x0D
168 #define ADIN2111_TTSCAH 0x10
169 #define ADIN2111_TTSCAL 0x11
170 #define ADIN2111_TTSCBH 0x12
171 #define ADIN2111_TTSCBL 0x13
172 #define ADIN2111_TTSCCH 0x14
173 #define ADIN2111_TTSCCL 0x15
174 #define ADIN2111_MDIOACC0 0x20
175 #define ADIN2111_MDIOACC1 0x21
176 #define ADIN2111_MDIOACC2 0x22
177 #define ADIN2111_MDIOACC3 0x23
178 #define ADIN2111_MDIOACC4 0x24
179 #define ADIN2111_MDIOACC5 0x25
180 #define ADIN2111_MDIOACC6 0x26
181 #define ADIN2111_MDIOACC7 0x27
182 #define ADIN2111_TX_FSIZE 0x30
183 #define ADIN2111_TX 0x31
184 #define ADIN2111_TX_SPACE 0x32
185 #define ADIN2111_TX_THRESH 0x34
186 #define ADIN2111_TX_PRI 0x35
187 #define ADIN2111_FIFO_CLR 0x36
188 #define ADIN2111_SCRATCH0 0x37
189 #define ADIN2111_SCRATCH1 0x38
190 #define ADIN2111_SCRATCH2 0x39
191 #define ADIN2111_SCRATCH3 0x3A
192 #define ADIN2111_MAC_RST_STATUS 0x3B
193 #define ADIN2111_SOFT_RST 0x3C
194 #define ADIN2111_SPI_INJ_ERR 0x3D
195 #define ADIN2111_FIFO_SIZE 0x3E
196 #define ADIN2111_TFC 0x3F
197 #define ADIN2111_TXSIZE 0x40
198 #define ADIN2111_HTX_OVF_FRM_CNT 0x41
199 #define ADIN2111_MECC_ERR_ADDR 0x42
200 #define ADIN2111_CECC_ERR0 0x43
201 #define ADIN2111_CECC_ERR1 0x44
202 #define ADIN2111_CECC_ERR2 0x45
203 #define ADIN2111_CECC_ERR3 0x46
204 #define ADIN2111_CECC_ERR4 0x47
205 #define ADIN2111_CECC_ERR5 0x48
206 #define ADIN2111_CECC_ERR6 0x49
207 #define ADIN2111_ADDR_FILT_UPR0 0x50
208 #define ADIN2111_ADDR_FILT_LWR0 0x51
209 #define ADIN2111_ADDR_FILT_UPR1 0x52
210 #define ADIN2111_ADDR_FILT_LWR1 0x53
211 #define ADIN2111_ADDR_FILT_UPR2 0x54
212 #define ADIN2111_ADDR_FILT_LWR2 0x55
213 #define ADIN2111_ADDR_FILT_UPR3 0x56
214 #define ADIN2111_ADDR_FILT_LWR3 0x57
215 #define ADIN2111_ADDR_FILT_UPR4 0x58
216 #define ADIN2111_ADDR_FILT_LWR4 0x59
217 #define ADIN2111_ADDR_FILT_UPR5 0x5A
218 #define ADIN2111_ADDR_FILT_LWR5 0x5B
219 #define ADIN2111_ADDR_FILT_UPR6 0x5C
220 #define ADIN2111_ADDR_FILT_LWR6 0x5D
221 #define ADIN2111_ADDR_FILT_UPR7 0x5E
222 #define ADIN2111_ADDR_FILT_LWR7 0x5F
223 #define ADIN2111_ADDR_FILT_UPR8 0x60
224 #define ADIN2111_ADDR_FILT_LWR8 0x61
225 #define ADIN2111_ADDR_FILT_UPR9 0x62
226 #define ADIN2111_ADDR_FILT_LWR9 0x63
227 #define ADIN2111_ADDR_FILT_UPR10 0x64
228 #define ADIN2111_ADDR_FILT_LWR10 0x65
229 #define ADIN2111_ADDR_FILT_UPR11 0x66
230 #define ADIN2111_ADDR_FILT_LWR11 0x67
231 #define ADIN2111_ADDR_FILT_UPR12 0x68
232 #define ADIN2111_ADDR_FILT_LWR12 0x69
233 #define ADIN2111_ADDR_FILT_UPR13 0x6A
234 #define ADIN2111_ADDR_FILT_LWR13 0x6B
235 #define ADIN2111_ADDR_FILT_UPR14 0x6C
236 #define ADIN2111_ADDR_FILT_LWR14 0x6D
237 #define ADIN2111_ADDR_FILT_UPR15 0x6E
238 #define ADIN2111_ADDR_FILT_LWR15 0x6F
239 #define ADIN2111_ADDR_MSK_UPR0 0x70
240 #define ADIN2111_ADDR_MSK_LWR0 0x71
241 #define ADIN2111_ADDR_MSK_UPR1 0x72
242 #define ADIN2111_ADDR_MSK_LWR1 0x73
243 #define ADIN2111_TS_ADDEND 0x80
244 #define ADIN2111_TS_1SEC_CMP 0x81
245 #define ADIN2111_TS_SEC_CNT 0x82
246 #define ADIN2111_TS_NS_CNT 0x83
247 #define ADIN2111_TS_CFG 0x84
248 #define ADIN2111_TS_TIMER_HI 0x85
249 #define ADIN2111_TS_TIMER_LO 0x86
250 #define ADIN2111_TS_TIMER_QE_CORR 0x87
251 #define ADIN2111_TS_TIMER_START 0x88
252 #define ADIN2111_TS_EXT_CAPT0 0x89
253 #define ADIN2111_TS_EXT_CAPT1 0x8A
254 #define ADIN2111_TS_FREECNT_CAPT 0x8B
255 #define ADIN2111_P1_RX_FSIZE 0x90
256 #define ADIN2111_P1_RX 0x91
257 #define ADIN2111_P1_RX_FRM_CNT 0xA0
258 #define ADIN2111_P1_RX_BCAST_CNT 0xA1
259 #define ADIN2111_P1_RX_MCAST_CNT 0xA2
260 #define ADIN2111_P1_RX_UCAST_CNT 0xA3
261 #define ADIN2111_P1_RX_CRC_ERR_CNT 0xA4
262 #define ADIN2111_P1_RX_ALGN_ERR_CNT 0xA5
263 #define ADIN2111_P1_RX_LS_ERR_CNT 0xA6
264 #define ADIN2111_P1_RX_PHY_ERR_CNT 0xA7
265 #define ADIN2111_P1_TX_FRM_CNT 0xA8
266 #define ADIN2111_P1_TX_BCAST_CNT 0xA9
267 #define ADIN2111_P1_TX_MCAST_CNT 0xAA
268 #define ADIN2111_P1_TX_UCAST_CNT 0xAB
269 #define ADIN2111_P1_RX_DROP_FULL_CNT 0xAC
270 #define ADIN2111_P1_RX_DROP_FILT_CNT 0xAD
271 #define ADIN2111_P1_RX_IFG_ERR_CNT 0xAE
272 #define ADIN2111_P1_TX_IFG 0xB0
273 #define ADIN2111_P1_LOOP 0xB3
274 #define ADIN2111_P1_RX_CRC_EN 0xB4
275 #define ADIN2111_P1_RX_IFG 0xB5
276 #define ADIN2111_P1_RX_MAX_LEN 0xB6
277 #define ADIN2111_P1_RX_MIN_LEN 0xB7
278 #define ADIN2111_P1_LO_RFC 0xB8
279 #define ADIN2111_P1_HI_RFC 0xB9
280 #define ADIN2111_P1_LO_RXSIZE 0xBA
281 #define ADIN2111_P1_HI_RXSIZE 0xBB
282 #define ADIN2111_P1TOP2_TXSIZE 0xBC
283 #define ADIN2111_P2_RX_FSIZE 0xC0
284 #define ADIN2111_P2_RX 0xC1
285 #define ADIN2111_P2_RX_FRM_CNT 0xD0
286 #define ADIN2111_P2_RX_BCAST_CNT 0xD1
287 #define ADIN2111_P2_RX_MCAST_CNT 0xD2
288 #define ADIN2111_P2_RX_UCAST_CNT 0xD3
289 #define ADIN2111_P2_RX_CRC_ERR_CNT 0xD4
290 #define ADIN2111_P2_RX_ALGN_ERR_CNT 0xD5
291 #define ADIN2111_P2_RX_LS_ERR_CNT 0xD6
292 #define ADIN2111_P2_RX_PHY_ERR_CNT 0xD7
293 #define ADIN2111_P2_TX_FRM_CNT 0xD8
294 #define ADIN2111_P2_TX_BCAST_CNT 0xD9
295 #define ADIN2111_P2_TX_MCAST_CNT 0xDA
296 #define ADIN2111_P2_TX_UCAST_CNT 0xDB
297 #define ADIN2111_P2_RX_DROP_FULL_CNT 0xDC
298 #define ADIN2111_P2_RX_DROP_FILT_CNT 0xDD
299 #define ADIN2111_P2_RX_IFG_ERR_CNT 0xDE
300 #define ADIN2111_P2_TX_IFG 0xE0
301 #define ADIN2111_P2_LOOP 0xE3
302 #define ADIN2111_P2_RX_CRC_EN 0xE4
303 #define ADIN2111_P2_RX_IFG 0xE5
304 #define ADIN2111_P2_RX_MAX_LEN 0xE6
305 #define ADIN2111_P2_RX_MIN_LEN 0xE7
306 #define ADIN2111_P2_LO_RFC 0xE8
307 #define ADIN2111_P2_HI_RFC 0xE9
308 #define ADIN2111_P2_LO_RXSIZE 0xEA
309 #define ADIN2111_P2_HI_RXSIZE 0xEB
310 #define ADIN2111_P2TOP1_TXSIZE 0xEC
311 #define ADIN2111_P2_TTSCAH 0xF0
312 #define ADIN2111_P2_TTSCAL 0xF1
313 #define ADIN2111_P2_TTSCBH 0xF2
314 #define ADIN2111_P2_TTSCBL 0xF3
315 #define ADIN2111_P2_TTSCCH 0xF4
316 #define ADIN2111_P2_TTSCCL 0xF5
317 
318 //ADIN2111 PHY registers
319 #define ADIN2111_MI_CONTROL 0x00
320 #define ADIN2111_MI_STATUS 0x01
321 #define ADIN2111_MI_PHY_ID1 0x02
322 #define ADIN2111_MI_PHY_ID2 0x03
323 #define ADIN2111_MMD_ACCESS_CNTRL 0x0D
324 #define ADIN2111_MMD_ACCESS 0x0E
325 
326 //ADIN2111 MMD registers
327 #define ADIN2111_PMA_PMD_CNTRL1 0x01, 0x0000
328 #define ADIN2111_PMA_PMD_STAT1 0x01, 0x0001
329 #define ADIN2111_PMA_PMD_DEVS_IN_PKG1 0x01, 0x0005
330 #define ADIN2111_PMA_PMD_DEVS_IN_PKG2 0x01, 0x0006
331 #define ADIN2111_PMA_PMD_CNTRL2 0x01, 0x0007
332 #define ADIN2111_PMA_PMD_STAT2 0x01, 0x0008
333 #define ADIN2111_PMA_PMD_TX_DIS 0x01, 0x0009
334 #define ADIN2111_PMA_PMD_EXT_ABILITY 0x01, 0x000B
335 #define ADIN2111_PMA_PMD_BT1_ABILITY 0x01, 0x0012
336 #define ADIN2111_PMA_PMD_BT1_CONTROL 0x01, 0x0834
337 #define ADIN2111_B10L_PMA_CNTRL 0x01, 0x08F6
338 #define ADIN2111_B10L_PMA_STAT 0x01, 0x08F7
339 #define ADIN2111_B10L_TEST_MODE_CNTRL 0x01, 0x08F8
340 #define ADIN2111_B10L_PMA_LINK_STAT 0x01, 0x8302
341 #define ADIN2111_MSE_VAL 0x01, 0x830B
342 #define ADIN2111_PCS_CNTRL1 0x03, 0x0000
343 #define ADIN2111_PCS_STAT1 0x03, 0x0001
344 #define ADIN2111_PCS_DEVS_IN_PKG1 0x03, 0x0005
345 #define ADIN2111_PCS_DEVS_IN_PKG2 0x03, 0x0006
346 #define ADIN2111_PCS_STAT2 0x03, 0x0008
347 #define ADIN2111_B10L_PCS_CNTRL 0x03, 0x08E6
348 #define ADIN2111_B10L_PCS_STAT 0x03, 0x08E7
349 #define ADIN2111_AN_DEVS_IN_PKG1 0x07, 0x0005
350 #define ADIN2111_AN_DEVS_IN_PKG2 0x07, 0x0006
351 #define ADIN2111_AN_CONTROL 0x07, 0x0200
352 #define ADIN2111_AN_STATUS 0x07, 0x0201
353 #define ADIN2111_AN_ADV_ABILITY_L 0x07, 0x0202
354 #define ADIN2111_AN_ADV_ABILITY_M 0x07, 0x0203
355 #define ADIN2111_AN_ADV_ABILITY_H 0x07, 0x0204
356 #define ADIN2111_AN_LP_ADV_ABILITY_L 0x07, 0x0205
357 #define ADIN2111_AN_LP_ADV_ABILITY_M 0x07, 0x0206
358 #define ADIN2111_AN_LP_ADV_ABILITY_H 0x07, 0x0207
359 #define ADIN2111_AN_NEXT_PAGE_L 0x07, 0x0208
360 #define ADIN2111_AN_NEXT_PAGE_M 0x07, 0x0209
361 #define ADIN2111_AN_NEXT_PAGE_H 0x07, 0x020A
362 #define ADIN2111_AN_LP_NEXT_PAGE_L 0x07, 0x020B
363 #define ADIN2111_AN_LP_NEXT_PAGE_M 0x07, 0x020C
364 #define ADIN2111_AN_LP_NEXT_PAGE_H 0x07, 0x020D
365 #define ADIN2111_AN_B10_ADV_ABILITY 0x07, 0x020E
366 #define ADIN2111_AN_B10_LP_ADV_ABILITY 0x07, 0x020F
367 #define ADIN2111_AN_FRC_MODE_EN 0x07, 0x8000
368 #define ADIN2111_AN_STATUS_EXTRA 0x07, 0x8001
369 #define ADIN2111_AN_PHY_INST_STATUS 0x07, 0x8030
370 #define ADIN2111_MMD1_DEV_ID1 0x1E, 0x0002
371 #define ADIN2111_MMD1_DEV_ID2 0x1E, 0x0003
372 #define ADIN2111_MMD1_DEVS_IN_PKG1 0x1E, 0x0005
373 #define ADIN2111_MMD1_DEVS_IN_PKG2 0x1E, 0x0006
374 #define ADIN2111_MMD1_STATUS 0x1E, 0x0008
375 #define ADIN2111_CRSM_IRQ_STATUS 0x1E, 0x0010
376 #define ADIN2111_CRSM_IRQ_MASK 0x1E, 0x0020
377 #define ADIN2111_CRSM_SFT_RST 0x1E, 0x8810
378 #define ADIN2111_CRSM_SFT_PD_CNTRL 0x1E, 0x8812
379 #define ADIN2111_CRSM_PHY_SUBSYS_RST 0x1E, 0x8814
380 #define ADIN2111_CRSM_MAC_IF_RST 0x1E, 0x8815
381 #define ADIN2111_CRSM_STAT 0x1E, 0x8818
382 #define ADIN2111_CRSM_PMG_CNTRL 0x1E, 0x8819
383 #define ADIN2111_CRSM_DIAG_CLK_CTRL 0x1E, 0x882C
384 #define ADIN2111_MGMT_PRT_PKG 0x1E, 0x8C22
385 #define ADIN2111_MGMT_MDIO_CNTRL 0x1E, 0x8C30
386 #define ADIN2111_DIGIO_PINMUX 0x1E, 0x8C56
387 #define ADIN2111_LED0_BLINK_TIME_CNTRL 0x1E, 0x8C80
388 #define ADIN2111_LED1_BLINK_TIME_CNTRL 0x1E, 0x8C81
389 #define ADIN2111_LED_CNTRL 0x1E, 0x8C82
390 #define ADIN2111_LED_POLARITY 0x1E, 0x8C83
391 #define ADIN2111_MMD2_DEV_ID1 0x1F, 0x0002
392 #define ADIN2111_MMD2_DEV_ID2 0x1F, 0x0003
393 #define ADIN2111_MMD2_DEVS_IN_PKG1 0x1F, 0x0005
394 #define ADIN2111_MMD2_DEVS_IN_PKG2 0x1F, 0x0006
395 #define ADIN2111_MMD2_STATUS 0x1F, 0x0008
396 #define ADIN2111_PHY_SUBSYS_IRQ_STATUS 0x1F, 0x0011
397 #define ADIN2111_PHY_SUBSYS_IRQ_MASK 0x1F, 0x0021
398 #define ADIN2111_FC_EN 0x1F, 0x8001
399 #define ADIN2111_FC_IRQ_EN 0x1F, 0x8004
400 #define ADIN2111_FC_TX_SEL 0x1F, 0x8005
401 #define ADIN2111_RX_ERR_CNT 0x1F, 0x8008
402 #define ADIN2111_FC_FRM_CNT_H 0x1F, 0x8009
403 #define ADIN2111_FC_FRM_CNT_L 0x1F, 0x800A
404 #define ADIN2111_FC_LEN_ERR_CNT 0x1F, 0x800B
405 #define ADIN2111_FC_ALGN_ERR_CNT 0x1F, 0x800C
406 #define ADIN2111_FC_SYMB_ERR_CNT 0x1F, 0x800D
407 #define ADIN2111_FC_OSZ_CNT 0x1F, 0x800E
408 #define ADIN2111_FC_USZ_CNT 0x1F, 0x800F
409 #define ADIN2111_FC_ODD_CNT 0x1F, 0x8010
410 #define ADIN2111_FC_ODD_PRE_CNT 0x1F, 0x8011
411 #define ADIN2111_FC_FALSE_CARRIER_CNT 0x1F, 0x8013
412 #define ADIN2111_FG_EN 0x1F, 0x8020
413 #define ADIN2111_FG_CNTRL_RSTRT 0x1F, 0x8021
414 #define ADIN2111_FG_CONT_MODE_EN 0x1F, 0x8022
415 #define ADIN2111_FG_IRQ_EN 0x1F, 0x8023
416 #define ADIN2111_FG_FRM_LEN 0x1F, 0x8025
417 #define ADIN2111_FG_IFG_LEN 0x1F, 0x8026
418 #define ADIN2111_FG_NFRM_H 0x1F, 0x8027
419 #define ADIN2111_FG_NFRM_L 0x1F, 0x8028
420 #define ADIN2111_FG_DONE 0x1F, 0x8029
421 #define ADIN2111_MAC_IF_LOOPBACK 0x1F, 0x8055
422 #define ADIN2111_MAC_IF_SOP_CNTRL 0x1F, 0x805A
423 
424 //Identification Version register
425 #define ADIN2111_IDVER_MINVER 0x0000000F
426 
427 //PHY Identification register
428 #define ADIN2111_PHYID_OUI 0xFFFFFC00
429 #define ADIN2111_PHYID_OUI_DEFAULT 0x0283BC00
430 #define ADIN2111_PHYID_MODEL 0x000003F0
431 #define ADIN2111_PHYID_MODEL_DEFAULT 0x000000A0
432 #define ADIN2111_PHYID_REVISION 0x0000000F
433 #define ADIN2111_PHYID_REVISION_DEFAULT 0x00000001
434 
435 //Supported Capabilities register
436 #define ADIN2111_CAPABILITY_TXFCSVC 0x00000400
437 #define ADIN2111_CAPABILITY_IPRAC 0x00000200
438 #define ADIN2111_CAPABILITY_DPRAC 0x00000100
439 #define ADIN2111_CAPABILITY_CTC 0x00000080
440 #define ADIN2111_CAPABILITY_FTSC 0x00000040
441 #define ADIN2111_CAPABILITY_AIDC 0x00000020
442 #define ADIN2111_CAPABILITY_SEQC 0x00000010
443 #define ADIN2111_CAPABILITY_MINCPS 0x00000007
444 #define ADIN2111_CAPABILITY_MINCPS_8B 0x00000003
445 #define ADIN2111_CAPABILITY_MINCPS_16B 0x00000004
446 #define ADIN2111_CAPABILITY_MINCPS_32B 0x00000005
447 #define ADIN2111_CAPABILITY_MINCPS_64B 0x00000006
448 
449 //Reset Control and Status register
450 #define ADIN2111_RESET_SWRESET 0x00000001
451 
452 //Configuration 0 register
453 #define ADIN2111_CONFIG0_SYNC 0x00008000
454 #define ADIN2111_CONFIG0_TXFCSVE 0x00004000
455 #define ADIN2111_CONFIG0_CSARFE 0x00002000
456 #define ADIN2111_CONFIG0_ZARFE 0x00001000
457 #define ADIN2111_CONFIG0_TXCTHRESH 0x00000C00
458 #define ADIN2111_CONFIG0_TXCTHRESH_1_CREDIT 0x00000000
459 #define ADIN2111_CONFIG0_TXCTHRESH_4_CREDITS 0x00000400
460 #define ADIN2111_CONFIG0_TXCTHRESH_8_CREDITS 0x00000800
461 #define ADIN2111_CONFIG0_TXCTHRESH_16_CREDITS 0x00000C00
462 #define ADIN2111_CONFIG0_TXCTE 0x00000200
463 #define ADIN2111_CONFIG0_RXCTE 0x00000100
464 #define ADIN2111_CONFIG0_FTSE 0x00000080
465 #define ADIN2111_CONFIG0_FTSS 0x00000040
466 #define ADIN2111_CONFIG0_PROTE 0x00000020
467 #define ADIN2111_CONFIG0_SEQE 0x00000010
468 #define ADIN2111_CONFIG0_CPS 0x00000007
469 #define ADIN2111_CONFIG0_CPS_8B 0x00000003
470 #define ADIN2111_CONFIG0_CPS_16B 0x00000004
471 #define ADIN2111_CONFIG0_CPS_32B 0x00000005
472 #define ADIN2111_CONFIG0_CPS_64B 0x00000006
473 
474 //Configuration 2 register
475 #define ADIN2111_CONFIG2_P2_RCV_IFG_ERR_FRM 0x00010000
476 #define ADIN2111_CONFIG2_RX_RD_ORDER 0x00008000
477 #define ADIN2111_CONFIG2_P2_FWD_UNK2P1 0x00004000
478 #define ADIN2111_CONFIG2_P1_FWD_UNK2P2 0x00002000
479 #define ADIN2111_CONFIG2_P2_FWD_UNK2HOST 0x00001000
480 #define ADIN2111_CONFIG2_PORT_CUT_THRU_EN 0x00000800
481 #define ADIN2111_CONFIG2_TX_RDY_ON_EMPTY 0x00000100
482 #define ADIN2111_CONFIG2_SFD_DETECT_SRC 0x00000080
483 #define ADIN2111_CONFIG2_STATS_CLR_ON_RD 0x00000040
484 #define ADIN2111_CONFIG2_CRC_APPEND 0x00000020
485 #define ADIN2111_CONFIG2_P1_RCV_IFG_ERR_FRM 0x00000010
486 #define ADIN2111_CONFIG2_P1_FWD_UNK2HOST 0x00000004
487 #define ADIN2111_CONFIG2_MSPEED 0x00000003
488 #define ADIN2111_CONFIG2_MSPEED_2_5_MHZ 0x00000000
489 #define ADIN2111_CONFIG2_MSPEED_4_166_MHZ 0x00000001
490 
491 //Status 0 register
492 #define ADIN2111_STATUS0_CDPE 0x00001000
493 #define ADIN2111_STATUS0_TXFCSE 0x00000800
494 #define ADIN2111_STATUS0_TTSCAC 0x00000400
495 #define ADIN2111_STATUS0_TTSCAB 0x00000200
496 #define ADIN2111_STATUS0_TTSCAA 0x00000100
497 #define ADIN2111_STATUS0_PHYINT 0x00000080
498 #define ADIN2111_STATUS0_RESETC 0x00000040
499 #define ADIN2111_STATUS0_HDRE 0x00000020
500 #define ADIN2111_STATUS0_LOFE 0x00000010
501 #define ADIN2111_STATUS0_RXBOE 0x00000008
502 #define ADIN2111_STATUS0_TXBUE 0x00000004
503 #define ADIN2111_STATUS0_TXBOE 0x00000002
504 #define ADIN2111_STATUS0_TXPE 0x00000001
505 
506 //Status 1 register
507 #define ADIN2111_STATUS1_P2_TXFCSE 0x01000000
508 #define ADIN2111_STATUS1_P2_RX_IFG_ERR 0x00800000
509 #define ADIN2111_STATUS1_P2_TTSCAC 0x00400000
510 #define ADIN2111_STATUS1_P2_TTSCAB 0x00200000
511 #define ADIN2111_STATUS1_P2_TTSCAA 0x00100000
512 #define ADIN2111_STATUS1_P2_PHYINT 0x00080000
513 #define ADIN2111_STATUS1_P2_RX_RDY_HI 0x00040000
514 #define ADIN2111_STATUS1_P2_RX_RDY 0x00020000
515 #define ADIN2111_STATUS1_TX_ECC_ERR 0x00001000
516 #define ADIN2111_STATUS1_RX_ECC_ERR 0x00000800
517 #define ADIN2111_STATUS1_SPI_ERR 0x00000400
518 #define ADIN2111_STATUS1_P1_RX_IFG_ERR 0x00000100
519 #define ADIN2111_STATUS1_P1_RX_RDY_HI 0x00000020
520 #define ADIN2111_STATUS1_P1_RX_RDY 0x00000010
521 #define ADIN2111_STATUS1_TX_RDY 0x00000008
522 
523 //Buffer Status register
524 #define ADIN2111_BUFSTS_TXC 0x0000FF00
525 #define ADIN2111_BUFSTS_RCA 0x000000FF
526 
527 //Interrupt Mask 0 register
528 #define ADIN2111_IMASK0_CDPEM 0x00001000
529 #define ADIN2111_IMASK0_TXFCSEM 0x00000800
530 #define ADIN2111_IMASK0_TTSCACM 0x00000400
531 #define ADIN2111_IMASK0_TTSCABM 0x00000200
532 #define ADIN2111_IMASK0_TTSCAAM 0x00000100
533 #define ADIN2111_IMASK0_PHYINTM 0x00000080
534 #define ADIN2111_IMASK0_RESETCM 0x00000040
535 #define ADIN2111_IMASK0_HDREM 0x00000020
536 #define ADIN2111_IMASK0_LOFEM 0x00000010
537 #define ADIN2111_IMASK0_RXBOEM 0x00000008
538 #define ADIN2111_IMASK0_TXBUEM 0x00000004
539 #define ADIN2111_IMASK0_TXBOEM 0x00000002
540 #define ADIN2111_IMASK0_TXPEM 0x00000001
541 
542 //Mask Bits for Driving the Interrupt Pin register
543 #define ADIN2111_IMASK1_P2_TXFCSEM 0x01000000
544 #define ADIN2111_IMASK1_P2_RX_IFG_ERR_MASK 0x00800000
545 #define ADIN2111_IMASK1_P2_TTSCACM 0x00400000
546 #define ADIN2111_IMASK1_P2_TTSCABM 0x00200000
547 #define ADIN2111_IMASK1_P2_TTSCAAM 0x00100000
548 #define ADIN2111_IMASK1_P2_PHYINT_MASK 0x00080000
549 #define ADIN2111_IMASK1_P2_RX_RDY_MASK 0x00020000
550 #define ADIN2111_IMASK1_TX_ECC_ERR_MASK 0x00001000
551 #define ADIN2111_IMASK1_RX_ECC_ERR_MASK 0x00000800
552 #define ADIN2111_IMASK1_SPI_ERR_MASK 0x00000400
553 #define ADIN2111_IMASK1_P1_RX_IFG_ERR_MASK 0x00000100
554 #define ADIN2111_IMASK1_P1_RX_RDY_MASK 0x00000010
555 #define ADIN2111_IMASK1_TX_RDY_MASK 0x00000008
556 #define ADIN2111_IMASK1_LINK_CHANGE_MASK 0x00000002
557 
558 //MDIO Access register
559 #define ADIN2111_MDIOACC_MDIO_TRDONE 0x80000000
560 #define ADIN2111_MDIOACC_MDIO_TAERR 0x40000000
561 #define ADIN2111_MDIOACC_MDIO_ST 0x30000000
562 #define ADIN2111_MDIOACC_MDIO_ST_CLAUSE_45 0x00000000
563 #define ADIN2111_MDIOACC_MDIO_ST_CLAUSE_22 0x10000000
564 #define ADIN2111_MDIOACC_MDIO_OP 0x0C000000
565 #define ADIN2111_MDIOACC_MDIO_OP_ADDR 0x00000000
566 #define ADIN2111_MDIOACC_MDIO_OP_WRITE 0x04000000
567 #define ADIN2111_MDIOACC_MDIO_OP_INC_READ 0x08000000
568 #define ADIN2111_MDIOACC_MDIO_OP_READ 0x0C000000
569 #define ADIN2111_MDIOACC_MDIO_PRTAD 0x03E00000
570 #define ADIN2111_MDIOACC_MDIO_PRTAD_PHY1 0x00200000
571 #define ADIN2111_MDIOACC_MDIO_PRTAD_PHY2 0x00400000
572 #define ADIN2111_MDIOACC_MDIO_DEVAD 0x001F0000
573 #define ADIN2111_MDIOACC_MDIO_DATA 0x0000FFFF
574 
575 //MAC Tx Frame Size register
576 #define ADIN2111_TX_FSIZE_TX_FRM_SIZE 0x000007FF
577 
578 //MAC Transmit register
579 #define ADIN2111_TX_TDR 0xFFFFFFFF
580 
581 //Tx FIFO Space register
582 #define ADIN2111_TX_SPACE_TX_SPACE 0x00003FFF
583 
584 //Transmit Threshold register
585 #define ADIN2111_TX_THRESH_P2P_TX_THRESH 0x00000FC0
586 #define ADIN2111_TX_THRESH_HOST_TX_THRESH 0x0000003F
587 
588 //LES Tx Priority register
589 #define ADIN2111_TX_PRI_TX_HOST_PRI 0x00000007
590 #define ADIN2111_TX_PRI_TX_HOST_PRI_H50_P50 0x00000000
591 #define ADIN2111_TX_PRI_TX_HOST_PRI_H100_P0 0x00000005
592 #define ADIN2111_TX_PRI_TX_HOST_PRI_H0_P100 0x00000006
593 
594 //MAC FIFO Clear register
595 #define ADIN2111_FIFO_CLR_LES_P2P_FIFOS_CLR 0x00000008
596 #define ADIN2111_FIFO_CLR_LES_FIFOS_CLR 0x00000004
597 #define ADIN2111_FIFO_CLR_MAC_RXF_CLR 0x00000001
598 
599 //Scratch register
600 #define ADIN2111_SCRATCH_SCRATCH_DATA 0xFFFFFFFF
601 
602 //MAC Reset Status register
603 #define ADIN2111_MAC_RST_STATUS_MAC_CRYSL_CLK_RDY 0x00000002
604 #define ADIN2111_MAC_RST_STATUS_MAC_OSC_CLK_RDY 0x00000001
605 
606 //Software Reset register
607 #define ADIN2111_SOFT_RST_RST_KEY 0x0000FFFF
608 #define ADIN2111_SOFT_RST_RST_KEY_1_RESET 0x00004F1C
609 #define ADIN2111_SOFT_RST_RST_KEY_2_RESET 0x0000C1F4
610 #define ADIN2111_SOFT_RST_RST_KEY_1_RELEASE 0x00006F1A
611 #define ADIN2111_SOFT_RST_RST_KEY_2_RELEASE 0x0000A1F6
612 
613 //Inject an Error on MISO from the DUT register
614 #define ADIN2111_SPI_INJ_ERR_TEST_SPI_INJ_ERR 0x00000001
615 
616 //FIFO Sizes register
617 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE 0x0F000000
618 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_0KB 0x00000000
619 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_2KB 0x01000000
620 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_4KB 0x02000000
621 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_6KB 0x03000000
622 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_8KB 0x04000000
623 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_10KB 0x05000000
624 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_12KB 0x06000000
625 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_14KB 0x07000000
626 #define ADIN2111_FIFO_SIZE_P2_TX_SIZE_16KB 0x08000000
627 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE 0x00F00000
628 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_0KB 0x00000000
629 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_2KB 0x00100000
630 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_4KB 0x00200000
631 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_6KB 0x00300000
632 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_8KB 0x00400000
633 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_10KB 0x00500000
634 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_12KB 0x00600000
635 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_14KB 0x00700000
636 #define ADIN2111_FIFO_SIZE_P1_TX_SIZE_16KB 0x00800000
637 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE 0x000F0000
638 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_0KB 0x00000000
639 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_2KB 0x00010000
640 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_4KB 0x00020000
641 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_6KB 0x00030000
642 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_8KB 0x00040000
643 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_10KB 0x00050000
644 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_12KB 0x00060000
645 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_14KB 0x00070000
646 #define ADIN2111_FIFO_SIZE_P2_RX_HI_SIZE_16KB 0x00080000
647 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE 0x0000F000
648 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_0KB 0x00000000
649 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_2KB 0x00001000
650 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_4KB 0x00002000
651 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_6KB 0x00003000
652 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_8KB 0x00004000
653 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_10KB 0x00005000
654 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_12KB 0x00006000
655 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_14KB 0x00007000
656 #define ADIN2111_FIFO_SIZE_P2_RX_LO_SIZE_16KB 0x00008000
657 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE 0x00000F00
658 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_0KB 0x00000000
659 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_2KB 0x00000100
660 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_4KB 0x00000200
661 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_6KB 0x00000300
662 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_8KB 0x00000400
663 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_10KB 0x00000500
664 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_12KB 0x00000600
665 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_14KB 0x00000700
666 #define ADIN2111_FIFO_SIZE_P1_RX_HI_SIZE_16KB 0x00000800
667 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE 0x000000F0
668 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_0KB 0x00000000
669 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_2KB 0x00000010
670 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_4KB 0x00000020
671 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_6KB 0x00000030
672 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_8KB 0x00000040
673 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_10KB 0x00000050
674 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_12KB 0x00000060
675 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_14KB 0x00000070
676 #define ADIN2111_FIFO_SIZE_P1_RX_LO_SIZE_16KB 0x00000080
677 #define ADIN2111_FIFO_SIZE_HTX_SIZE 0x0000000F
678 #define ADIN2111_FIFO_SIZE_HTX_SIZE_0KB 0x00000000
679 #define ADIN2111_FIFO_SIZE_HTX_SIZE_2KB 0x00000001
680 #define ADIN2111_FIFO_SIZE_HTX_SIZE_4KB 0x00000002
681 #define ADIN2111_FIFO_SIZE_HTX_SIZE_6KB 0x00000003
682 #define ADIN2111_FIFO_SIZE_HTX_SIZE_8KB 0x00000004
683 #define ADIN2111_FIFO_SIZE_HTX_SIZE_10KB 0x00000005
684 #define ADIN2111_FIFO_SIZE_HTX_SIZE_12KB 0x00000006
685 #define ADIN2111_FIFO_SIZE_HTX_SIZE_14KB 0x00000007
686 #define ADIN2111_FIFO_SIZE_HTX_SIZE_16KB 0x00000008
687 
688 //Tx FIFO Frame Count register
689 #define ADIN2111_TFC_TFC 0x000001FF
690 
691 //Tx FIFO Valid Half Words register
692 #define ADIN2111_TXSIZE_TX_SIZE 0x00003FFF
693 
694 //Address of a Detected ECC Error in Memory register
695 #define ADIN2111_MECC_ERR_ADDR_MECC_ERR_ADDR 0x00003FFF
696 
697 //Corrected ECC Error Counter register
698 #define ADIN2111_CECC_ERR_CECC_ERR_CNT 0x000003FF
699 
700 //MAC Address Rule and DA Filter Upper 16 Bits register
701 #define ADIN2111_ADDR_FILT_UPR_APPLY2PORT2 0x80000000
702 #define ADIN2111_ADDR_FILT_UPR_APPLY2PORT1 0x40000000
703 #define ADIN2111_ADDR_FILT_UPR_HOST_PRI 0x00080000
704 #define ADIN2111_ADDR_FILT_UPR_TO_OTHER_PORT 0x00020000
705 #define ADIN2111_ADDR_FILT_UPR_TO_HOST 0x00010000
706 #define ADIN2111_ADDR_FILT_UPR_MAC_ADDR_47_32 0x0000FFFF
707 
708 //MAC Address DA Filter Lower 32 Bits register
709 #define ADIN2111_ADDR_FILT_LWR_MAC_ADDR_31_0 0xFFFFFFFF
710 
711 //Upper 16 Bits of the MAC Address Mask register
712 #define ADIN2111_ADDR_MSK_UPR_MAC_ADDR_MASK_47_32 0x0000FFFF
713 
714 //Lower 32 Bits of the MAC Address Mask register
715 #define ADIN2111_ADDR_MSK_LWR_MAC_ADDR_MASK_31_0 0xFFFFFFFF
716 
717 //Timer Configuration register
718 #define ADIN2111_TS_CFG_TS_CAPT_FREE_CNT 0x00000010
719 #define ADIN2111_TS_CFG_TS_TIMER_STOP 0x00000008
720 #define ADIN2111_TS_CFG_TS_TIMER_DEF 0x00000004
721 #define ADIN2111_TS_CFG_TS_CLR 0x00000002
722 #define ADIN2111_TS_CFG_TS_EN 0x00000001
723 
724 //Quantization Error Correction register
725 #define ADIN2111_TS_TIMER_QE_CORR_TS_TIMER_QE_CORR 0x000000FF
726 
727 //P1 MAC Rx Frame Size register
728 #define ADIN2111_P1_RX_FSIZE_P1_RX_FRM_SIZE 0x000007FF
729 
730 //P1 MAC Receive register
731 #define ADIN2111_P1_RX_P1_RDR 0xFFFFFFFF
732 
733 //P1 Transmit Interframe Gap register
734 #define ADIN2111_P1_TX_IFG_P1_TX_IFG 0x000000FF
735 
736 //P1 MAC Loopback Enable register
737 #define ADIN2111_P1_LOOP_P1_LOOPBACK_EN 0x00000001
738 
739 //P1 CRC Check Enable on Receive register
740 #define ADIN2111_P1_RX_CRC_EN_P1_CRC_CHK_EN 0x00000001
741 
742 //P1 Receive Interframe Gap register
743 #define ADIN2111_P1_RX_IFG_P1_RX_IFG 0x0000003F
744 
745 //P1 Maximum Receive Frame Length register
746 #define ADIN2111_P1_RX_MAX_LEN_P1_MAX_FRM_LEN 0x0000FFFF
747 
748 //P1 Minimum Receive Frame Length register
749 #define ADIN2111_P1_RX_MIN_LEN_P1_MIN_FRM_LEN 0x0000FFFF
750 
751 //P1 Rx Low Priority FIFO Frame Count register
752 #define ADIN2111_P1_LO_RFC_P1_LO_RFC 0x000001FF
753 
754 //P1 Rx High Priority FIFO Frame Count register
755 #define ADIN2111_P1_HI_RFC_P1_HI_RFC 0x000001FF
756 
757 //P1 Low Priority Rx FIFO Valid Half Words register
758 #define ADIN2111_P1_LO_RXSIZE_P1_LO_RXSIZE 0x00003FFF
759 
760 //P1 High Priority Rx FIFO Valid Half Words register
761 #define ADIN2111_P1_HI_RXSIZE_P1_HI_RXSIZE 0x00003FFF
762 
763 //P1 to P2 Tx Size register
764 #define ADIN2111_P1TOP2_TXSIZE_P1TOP2_TXSIZE 0x00003FFF
765 
766 //P2 MAC Rx Frame Size register
767 #define ADIN2111_P2_RX_FSIZE_P2_RX_FRM_SIZE 0x000007FF
768 
769 //P2 MAC Receive register
770 #define ADIN2111_P2_RX_P2_RDR 0xFFFFFFFF
771 
772 //P2 Transmit Interframe Gap register
773 #define ADIN2111_P2_TX_IFG_P2_TX_IFG 0x000000FF
774 
775 //P2 MAC Loopback Enable register
776 #define ADIN2111_P2_LOOP_P2_LOOPBACK_EN 0x00000001
777 
778 //P2 CRC Check Enable on Receive register
779 #define ADIN2111_P2_RX_CRC_EN_P2_CRC_CHK_EN 0x00000001
780 
781 //P2 Receive Interframe Gap register
782 #define ADIN2111_P2_RX_IFG_P2_RX_IFG 0x0000FFFF
783 
784 //P2 Maximum Receive Frame Length register
785 #define ADIN2111_P2_RX_MAX_LEN_P2_MAX_FRM_LEN 0x0000FFFF
786 
787 //P2 Minimum Receive Frame Length register
788 #define ADIN2111_P2_RX_MIN_LEN_P2_MIN_FRM_LEN 0x0000FFFF
789 
790 //P2 Rx Low Priority FIFO Frame Count register
791 #define ADIN2111_P2_LO_RFC_P2_LO_RFC 0x000001FF
792 
793 //P2 Rx High Priority FIFO Frame Count register
794 #define ADIN2111_P2_HI_RFC_P2_HI_RFC 0x000001FF
795 
796 //P2 Low Priority Rx FIFO Valid Half Words register
797 #define ADIN2111_P2_LO_RXSIZE_P2_LO_RXSIZE 0x00003FFF
798 
799 //P2 High Priority Rx FIFO Valid Half Words register
800 #define ADIN2111_P2_HI_RXSIZE_P2_HI_RXSIZE 0x00003FFF
801 
802 //P2 to P1 Tx Size register
803 #define ADIN2111_P2TOP1_TXSIZE_P2TOP1_TXSIZE 0x00003FFF
804 
805 //MII Control register
806 #define ADIN2111_MI_CONTROL_MI_SFT_RST 0x8000
807 #define ADIN2111_MI_CONTROL_MI_LOOPBACK 0x4000
808 #define ADIN2111_MI_CONTROL_MI_SPEED_SEL_LSB 0x2000
809 #define ADIN2111_MI_CONTROL_MI_AN_EN 0x1000
810 #define ADIN2111_MI_CONTROL_MI_SFT_PD 0x0800
811 #define ADIN2111_MI_CONTROL_MI_ISOLATE 0x0400
812 #define ADIN2111_MI_CONTROL_MI_FULL_DUPLEX 0x0100
813 #define ADIN2111_MI_CONTROL_MI_COLTEST 0x0080
814 #define ADIN2111_MI_CONTROL_MI_SPEED_SEL_MSB 0x0040
815 #define ADIN2111_MI_CONTROL_MI_UNIDIR_EN 0x0020
816 
817 //MII Status register
818 #define ADIN2111_MI_STATUS_MI_T4_SPRT 0x8000
819 #define ADIN2111_MI_STATUS_MI_FD100_SPRT 0x4000
820 #define ADIN2111_MI_STATUS_MI_HD100_SPRT 0x2000
821 #define ADIN2111_MI_STATUS_MI_FD10_SPRT 0x1000
822 #define ADIN2111_MI_STATUS_MI_HD10_SPRT 0x0800
823 #define ADIN2111_MI_STATUS_MI_FD_T2_SPRT 0x0400
824 #define ADIN2111_MI_STATUS_MI_HD_T2_SPRT 0x0200
825 #define ADIN2111_MI_STATUS_MI_EXT_STAT_SPRT 0x0100
826 #define ADIN2111_MI_STATUS_MI_UNIDIR_ABLE 0x0080
827 #define ADIN2111_MI_STATUS_MI_MF_PREAM_SUP_ABLE 0x0040
828 #define ADIN2111_MI_STATUS_MI_AN_COMPLETE 0x0020
829 #define ADIN2111_MI_STATUS_MI_REM_FLT 0x0010
830 #define ADIN2111_MI_STATUS_MI_AN_ABLE 0x0008
831 #define ADIN2111_MI_STATUS_MI_LINK_STAT_LAT 0x0004
832 #define ADIN2111_MI_STATUS_MI_JABBER_DET 0x0002
833 #define ADIN2111_MI_STATUS_MI_EXT_CAPABLE 0x0001
834 
835 //PHY Identifier 1 register
836 #define ADIN2111_MI_PHY_ID1_MI_PHY_ID1 0xFFFF
837 #define ADIN2111_MI_PHY_ID1_MI_PHY_ID1_DEFAULT 0x0283
838 
839 //PHY Identifier 2 register
840 #define ADIN2111_MI_PHY_ID2_MI_PHY_ID2_OUI 0xFC00
841 #define ADIN2111_MI_PHY_ID2_MI_PHY_ID2_OUI_DEFAULT 0xBC00
842 #define ADIN2111_MI_PHY_ID2_MI_MODEL_NUM 0x03F0
843 #define ADIN2111_MI_PHY_ID2_MI_REV_NUM 0x000F
844 #define ADIN2111_MI_PHY_ID2_MI_REV_NUM_DEFAULT 0x0001
845 
846 //MMD Access Control register
847 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION 0xC000
848 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_ADDR 0x0000
849 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_NO_POST_INC 0x4000
850 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_POST_INC_RW 0x8000
851 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_POST_INC_W 0xC000
852 #define ADIN2111_MMD_ACCESS_CNTRL_MMD_ACR_DEVAD 0x001F
853 
854 //PMA/PMD Control 1 register
855 #define ADIN2111_PMA_PMD_CNTRL1_PMA_SFT_RST 0x8000
856 #define ADIN2111_PMA_PMD_CNTRL1_PMA_SFT_PD 0x0800
857 #define ADIN2111_PMA_PMD_CNTRL1_LB_PMA_LOC_EN 0x0001
858 
859 //PMA/PMD Status 1 register
860 #define ADIN2111_PMA_PMD_STAT1_PMA_LINK_STAT_OK_LL 0x0004
861 #define ADIN2111_PMA_PMD_STAT1_PMA_SFT_PD_ABLE 0x0002
862 
863 //PMA/PMD Control 2 register
864 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL 0x007F
865 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_CX4 0x0000
866 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_EW 0x0001
867 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LW 0x0002
868 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_SW 0x0003
869 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LX4 0x0004
870 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_ER 0x0005
871 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LR 0x0006
872 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_SR 0x0007
873 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LRM 0x0008
874 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_T 0x0009
875 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_KX4 0x000A
876 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_KR 0x000B
877 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_1000BASE_T 0x000C
878 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_1000BASE_KX 0x000D
879 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100BASE_TX 0x000E
880 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10BASE_T 0x000F
881 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D1 0x0010
882 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D2 0x0011
883 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D3 0x0012
884 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D1 0x0013
885 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D2 0x0014
886 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D3 0x0015
887 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U1 0x0016
888 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U2 0x0017
889 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U3 0x0018
890 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U1 0x0019
891 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U3 0x001A
892 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_RESERVED 0x001B
893 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D4 0x001C
894 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D4 0x001D
895 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U4 0x001E
896 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U4 0x001F
897 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_KR4 0x0020
898 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_CR4 0x0021
899 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_SR4 0x0022
900 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_LR4 0x0023
901 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_FR 0x0024
902 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_ER4 0x0025
903 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_T 0x0026
904 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_CR10 0x0028
905 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_SR10 0x0029
906 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_LR4 0x002A
907 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_ER4 0x002B
908 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_KP4 0x002C
909 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_KR4 0x002D
910 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_CR4 0x002E
911 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_SR4 0x002F
912 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_2_5GBASE_T 0x0030
913 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_5GBASE_T 0x0031
914 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GPASS_XR_D 0x0032
915 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GPASS_XR_U 0x0033
916 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_BASE_H 0x0034
917 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_LR 0x0035
918 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_ER 0x0036
919 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_T 0x0037
920 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_CR 0x0038
921 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_KR 0x0039
922 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_SR 0x003A
923 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_BASE_T1 0x003D
924 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_DR4 0x0053
925 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_FR4 0x0054
926 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_LR4 0x0055
927 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_SR16 0x0059
928 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_DR4 0x005A
929 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_FR8 0x005B
930 #define ADIN2111_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_LR8 0x005C
931 
932 //PMA/PMD Status 2 register
933 #define ADIN2111_PMA_PMD_STAT2_PMA_PMD_PRESENT 0xC000
934 #define ADIN2111_PMA_PMD_STAT2_PMA_PMD_EXT_ABLE 0x0200
935 #define ADIN2111_PMA_PMD_STAT2_PMA_PMD_TX_DIS_ABLE 0x0100
936 #define ADIN2111_PMA_PMD_STAT2_LB_PMA_LOC_ABLE 0x0001
937 
938 //PMA/PMD Transmit Disable register
939 #define ADIN2111_PMA_PMD_TX_DIS_PMA_TX_DIS 0x0001
940 
941 //PMA/PMD Extended Abilities register
942 #define ADIN2111_PMA_PMD_EXT_ABILITY_PMA_PMD_BT1_ABLE 0x0800
943 
944 //BASE-T1 PMA/PMD Extended Ability register
945 #define ADIN2111_PMA_PMD_BT1_ABILITY_B10S_ABILITY 0x0008
946 #define ADIN2111_PMA_PMD_BT1_ABILITY_B10L_ABILITY 0x0004
947 #define ADIN2111_PMA_PMD_BT1_ABILITY_B1000_ABILITY 0x0002
948 #define ADIN2111_PMA_PMD_BT1_ABILITY_B100_ABILITY 0x0001
949 
950 //BASE-T1 PMA/PMD Control register
951 #define ADIN2111_PMA_PMD_BT1_CONTROL_CFG_MST 0x4000
952 #define ADIN2111_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL 0x000F
953 #define ADIN2111_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_100BASE_T1 0x0000
954 #define ADIN2111_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_1000BASE_T1 0x0001
955 #define ADIN2111_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_10BASE_T1L 0x0002
956 #define ADIN2111_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_10BASE_T1S 0x0003
957 
958 //10BASE-T1L PMA Control register
959 #define ADIN2111_B10L_PMA_CNTRL_B10L_TX_DIS_MODE_EN 0x4000
960 #define ADIN2111_B10L_PMA_CNTRL_B10L_TX_LVL_HI 0x1000
961 #define ADIN2111_B10L_PMA_CNTRL_B10L_EEE 0x0400
962 #define ADIN2111_B10L_PMA_CNTRL_B10L_LB_PMA_LOC_EN 0x0001
963 
964 //10BASE-T1L PMA Status register
965 #define ADIN2111_B10L_PMA_STAT_B10L_LB_PMA_LOC_ABLE 0x2000
966 #define ADIN2111_B10L_PMA_STAT_B10L_TX_LVL_HI_ABLE 0x1000
967 #define ADIN2111_B10L_PMA_STAT_B10L_PMA_SFT_PD_ABLE 0x0800
968 #define ADIN2111_B10L_PMA_STAT_B10L_EEE_ABLE 0x0400
969 
970 //10BASE-T1L Test Mode Control register
971 #define ADIN2111_B10L_TEST_MODE_CNTRL_B10L_TX_TEST_MODE 0xE000
972 
973 //10BASE-T1L PMA Link Status register
974 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_REM_RCVR_STAT_OK_LL 0x0200
975 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_REM_RCVR_STAT_OK 0x0100
976 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_LOC_RCVR_STAT_OK_LL 0x0080
977 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_LOC_RCVR_STAT_OK 0x0040
978 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_DSCR_STAT_OK_LL 0x0020
979 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_DSCR_STAT_OK 0x0010
980 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_LINK_STAT_OK_LL 0x0002
981 #define ADIN2111_B10L_PMA_LINK_STAT_B10L_LINK_STAT_OK 0x0001
982 
983 //PCS Control 1 register
984 #define ADIN2111_PCS_CNTRL1_PCS_SFT_RST 0x8000
985 #define ADIN2111_PCS_CNTRL1_LB_PCS_EN 0x4000
986 #define ADIN2111_PCS_CNTRL1_PCS_SFT_PD 0x0800
987 
988 //PCS Status 1 register
989 #define ADIN2111_PCS_STAT1_PCS_SFT_PD_ABLE 0x0002
990 
991 //PCS Status 2 register
992 #define ADIN2111_PCS_STAT2_PCS_PRESENT 0xC000
993 
994 //10BASE-T1L PCS Control register
995 #define ADIN2111_B10L_PCS_CNTRL_B10L_LB_PCS_EN 0x4000
996 
997 //10BASE-T1L PCS Status register
998 #define ADIN2111_B10L_PCS_STAT_B10L_PCS_DSCR_STAT_OK_LL 0x0004
999 
1000 //BASE-T1 Autonegotiation Control register
1001 #define ADIN2111_AN_CONTROL_AN_EN 0x1000
1002 #define ADIN2111_AN_CONTROL_AN_RESTART 0x0200
1003 
1004 //BASE-T1 Autonegotiation Status register
1005 #define ADIN2111_AN_STATUS_AN_PAGE_RX 0x0040
1006 #define ADIN2111_AN_STATUS_AN_COMPLETE 0x0020
1007 #define ADIN2111_AN_STATUS_AN_REMOTE_FAULT 0x0010
1008 #define ADIN2111_AN_STATUS_AN_ABLE 0x0008
1009 #define ADIN2111_AN_STATUS_AN_LINK_STATUS 0x0004
1010 
1011 //BASE-T1 Autonegotiation Advertisement L register
1012 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_NEXT_PAGE_REQ 0x8000
1013 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_ACK 0x4000
1014 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_REMOTE_FAULT 0x2000
1015 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_FORCE_MS 0x1000
1016 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_PAUSE 0x0C00
1017 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_SELECTOR 0x001F
1018 #define ADIN2111_AN_ADV_ABILITY_L_AN_ADV_SELECTOR_DEFAULT 0x0001
1019 
1020 //BASE-T1 Autonegotiation Advertisement M register
1021 #define ADIN2111_AN_ADV_ABILITY_M_AN_ADV_B10L 0x4000
1022 #define ADIN2111_AN_ADV_ABILITY_M_AN_ADV_MST 0x0010
1023 
1024 //BASE-T1 Autonegotiation Advertisement H register
1025 #define ADIN2111_AN_ADV_ABILITY_H_AN_ADV_B10L_TX_LVL_HI_ABL 0x2000
1026 #define ADIN2111_AN_ADV_ABILITY_H_AN_ADV_B10L_TX_LVL_HI_REQ 0x1000
1027 
1028 //BASE-T1 Autonegotiation Link Partner Base Page Ability L register
1029 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_NEXT_PAGE_REQ 0x8000
1030 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_ACK 0x4000
1031 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_REMOTE_FAULT 0x2000
1032 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_FORCE_MS 0x1000
1033 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_PAUSE 0x0C00
1034 #define ADIN2111_AN_LP_ADV_ABILITY_L_AN_LP_ADV_SELECTOR 0x001F
1035 
1036 //BASE-T1 Autonegotiation Link Partner Base Page Ability M register
1037 #define ADIN2111_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B10L 0x4000
1038 #define ADIN2111_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B1000 0x0080
1039 #define ADIN2111_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B10S_FD 0x0040
1040 #define ADIN2111_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B100 0x0020
1041 #define ADIN2111_AN_LP_ADV_ABILITY_M_AN_LP_ADV_MST 0x0010
1042 
1043 //BASE-T1 Autonegotiation Link Partner Base Page Ability H register
1044 #define ADIN2111_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_EEE 0x4000
1045 #define ADIN2111_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_TX_LVL_HI_ABL 0x2000
1046 #define ADIN2111_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_TX_LVL_HI_REQ 0x1000
1047 #define ADIN2111_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10S_HD 0x0800
1048 
1049 //BASE-T1 Autonegotiation Next Page Transmit L register
1050 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_NEXT_PAGE_REQ 0x8000
1051 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_ACK 0x4000
1052 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_MESSAGE_PAGE 0x2000
1053 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_ACK2 0x1000
1054 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_TOGGLE 0x0800
1055 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE 0x07FF
1056 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_NULL 0x0001
1057 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_OUI_TAGGED 0x0005
1058 #define ADIN2111_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_AN_DEV_ID_TAG 0x0006
1059 
1060 //BASE-T1 Autonegotiation Next Page Transmit M register
1061 #define ADIN2111_AN_NEXT_PAGE_M_AN_NP_UNFORMATTED1 0xFFFF
1062 
1063 //BASE-T1 Autonegotiation Next Page Transmit H register
1064 #define ADIN2111_AN_NEXT_PAGE_H_AN_NP_UNFORMATTED2 0xFFFF
1065 
1066 //BASE-T1 Autonegotiation Link Partner Next Page Ability L register
1067 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_NEXT_PAGE_REQ 0x8000
1068 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_ACK 0x4000
1069 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_PAGE 0x2000
1070 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_ACK2 0x1000
1071 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_TOGGLE 0x0800
1072 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE 0x07FF
1073 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_NULL 0x0001
1074 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_OUI_TAGGED 0x0005
1075 #define ADIN2111_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_AN_DEV_ID_TAG 0x0006
1076 
1077 //BASE-T1 Autonegotiation Link Partner Next Page Ability M register
1078 #define ADIN2111_AN_LP_NEXT_PAGE_M_AN_LP_NP_UNFORMATTED1 0xFFFF
1079 
1080 //BASE-T1 Autonegotiation Link Partner Next Page Ability H register
1081 #define ADIN2111_AN_LP_NEXT_PAGE_H_AN_LP_NP_UNFORMATTED2 0xFFFF
1082 
1083 //10BASE-T1 Autonegotiation Control register
1084 #define ADIN2111_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L 0x8000
1085 #define ADIN2111_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_EEE 0x4000
1086 #define ADIN2111_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_TX_LVL_HI_ABL 0x2000
1087 #define ADIN2111_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_TX_LVL_HI_REQ 0x1000
1088 
1089 //10BASE-T1 Autonegotiation Status register
1090 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L 0x8000
1091 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_EEE 0x4000
1092 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_TX_LVL_HI_ABL 0x2000
1093 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_TX_LVL_HI_REQ 0x1000
1094 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10S_FD 0x0080
1095 #define ADIN2111_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10S_HD 0x0040
1096 
1097 //Autonegotiation Force Mode Enable register
1098 #define ADIN2111_AN_FRC_MODE_EN_AN_FRC_MODE_EN 0x0001
1099 
1100 //Extra Autonegotiation Status register
1101 #define ADIN2111_AN_STATUS_EXTRA_AN_LP_NP_RX 0x0400
1102 #define ADIN2111_AN_STATUS_EXTRA_AN_INC_LINK 0x0200
1103 #define ADIN2111_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN 0x0180
1104 #define ADIN2111_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_NOT_RUN 0x0000
1105 #define ADIN2111_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_SUCCESS_1_0V 0x0100
1106 #define ADIN2111_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_SUCCESS_2_4V 0x0180
1107 #define ADIN2111_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN 0x0060
1108 #define ADIN2111_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_NOT_RUN 0x0000
1109 #define ADIN2111_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_CONFIG_FAULT 0x0020
1110 #define ADIN2111_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_SUCCESS_SLAVE 0x0040
1111 #define ADIN2111_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_SUCCESS_MASTER 0x0060
1112 #define ADIN2111_AN_STATUS_EXTRA_AN_HCD_TECH 0x001E
1113 #define ADIN2111_AN_STATUS_EXTRA_AN_HCD_TECH_NULL 0x0000
1114 #define ADIN2111_AN_STATUS_EXTRA_AN_HCD_TECH_10BASE_T1L 0x0002
1115 #define ADIN2111_AN_STATUS_EXTRA_AN_LINK_GOOD 0x0001
1116 
1117 //PHY Instantaneous Status register
1118 #define ADIN2111_AN_PHY_INST_STATUS_IS_AN_TX_EN 0x0010
1119 #define ADIN2111_AN_PHY_INST_STATUS_IS_CFG_MST 0x0008
1120 #define ADIN2111_AN_PHY_INST_STATUS_IS_CFG_SLV 0x0004
1121 #define ADIN2111_AN_PHY_INST_STATUS_IS_TX_LVL_HI 0x0002
1122 #define ADIN2111_AN_PHY_INST_STATUS_IS_TX_LVL_LO 0x0001
1123 
1124 //Vendor Specific MMD 1 Device Identifier High register
1125 #define ADIN2111_MMD1_DEV_ID1_MMD1_DEV_ID1 0xFFFF
1126 #define ADIN2111_MMD1_DEV_ID1_MMD1_DEV_ID1_DEFAULT 0x0283
1127 
1128 //Vendor Specific MMD 1 Device Identifier Low register
1129 #define ADIN2111_MMD1_DEV_ID2_MMD1_DEV_ID2_OUI 0xFC00
1130 #define ADIN2111_MMD1_DEV_ID2_MMD1_DEV_ID2_OUI_DEFAULT 0xBC00
1131 #define ADIN2111_MMD1_DEV_ID2_MMD1_MODEL_NUM 0x03F0
1132 #define ADIN2111_MMD1_DEV_ID2_MMD1_MODEL_NUM_DEFAULT 0x00A0
1133 #define ADIN2111_MMD1_DEV_ID2_MMD1_REV_NUM 0x000F
1134 #define ADIN2111_MMD1_DEV_ID2_MMD1_REV_NUM_DEFAULT 0x0001
1135 
1136 //Vendor Specific MMD 1 Status register
1137 #define ADIN2111_MMD1_STATUS_MMD1_STATUS 0xC000
1138 #define ADIN2111_MMD1_STATUS_MMD1_STATUS_DEV_RESP 0x8000
1139 
1140 //System Interrupt Status register
1141 #define ADIN2111_CRSM_IRQ_STATUS_CRSM_SW_IRQ_LH 0x8000
1142 #define ADIN2111_CRSM_IRQ_STATUS_CRSM_HRD_RST_IRQ_LH 0x1000
1143 
1144 //System Interrupt Mask register
1145 #define ADIN2111_CRSM_IRQ_MASK_CRSM_SW_IRQ_REQ 0x8000
1146 #define ADIN2111_CRSM_IRQ_MASK_CRSM_HRD_RST_IRQ_EN 0x1000
1147 
1148 //Software Reset register
1149 #define ADIN2111_CRSM_SFT_RST_CRSM_SFT_RST 0x0001
1150 
1151 //Software Power-Down Control register
1152 #define ADIN2111_CRSM_SFT_PD_CNTRL_CRSM_SFT_PD 0x0001
1153 
1154 //PHY Subsystem Reset register
1155 #define ADIN2111_CRSM_PHY_SUBSYS_RST_CRSM_PHY_SUBSYS_RST 0x0001
1156 
1157 //PHY MAC Interface Reset register
1158 #define ADIN2111_CRSM_MAC_IF_RST_CRSM_MAC_IF_RST 0x0001
1159 
1160 //System Status register
1161 #define ADIN2111_CRSM_STAT_CRSM_SFT_PD_RDY 0x0002
1162 #define ADIN2111_CRSM_STAT_CRSM_SYS_RDY 0x0001
1163 
1164 //CRSM Power Management Control register
1165 #define ADIN2111_CRSM_PMG_CNTRL_CRSM_FRC_OSC_EN 0x0001
1166 
1167 //CRSM Diagnostics Clock Control register
1168 #define ADIN2111_CRSM_DIAG_CLK_CTRL_CRSM_DIAG_CLK_EN 0x0001
1169 
1170 //Package Configuration Values register
1171 #define ADIN2111_MGMT_PRT_PKG_MGMT_PRT_PKG_VAL 0x003F
1172 
1173 //MDIO Control register
1174 #define ADIN2111_MGMT_MDIO_CNTRL_MGMT_GRP_MDIO_EN 0x0001
1175 
1176 //Pin Mux Configuration 1 register
1177 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSTIMER_PINMUX 0x00C0
1178 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSTIMER_PINMUX_LED_0 0x0040
1179 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSTIMER_PINMUX_INT 0x0080
1180 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSTIMER_PINMUX_NONE 0x00C0
1181 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSCAPT_PINMUX 0x0030
1182 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSCAPT_PINMUX_LED_1 0x0010
1183 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSCAPT_PINMUX_TEST_1 0x0020
1184 #define ADIN2111_DIGIO_PINMUX_DIGIO_TSCAPT_PINMUX_NONE 0x0030
1185 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX 0x000E
1186 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_LED_1 0x0000
1187 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_TX_ER 0x0002
1188 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_TX_EN 0x0004
1189 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_TX_CLK 0x0006
1190 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_TXD_0 0x0008
1191 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_TXD_2 0x000A
1192 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_LINK_ST 0x000C
1193 #define ADIN2111_DIGIO_PINMUX_DIGIO_LED1_PINMUX_NONE 0x000E
1194 #define ADIN2111_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY 0x0001
1195 #define ADIN2111_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY_ASSERT_HIGH 0x0000
1196 #define ADIN2111_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY_ASSERT_LOW 0x0001
1197 
1198 //LED 0 On/Off Blink Time register
1199 #define ADIN2111_LED0_BLINK_TIME_CNTRL_LED0_ON_N4MS 0xFF00
1200 #define ADIN2111_LED0_BLINK_TIME_CNTRL_LED0_OFF_N4MS 0x00FF
1201 
1202 //LED 1 On/Off Blink Time register
1203 #define ADIN2111_LED1_BLINK_TIME_CNTRL_LED1_ON_N4MS 0xFF00
1204 #define ADIN2111_LED1_BLINK_TIME_CNTRL_LED1_OFF_N4MS 0x00FF
1205 
1206 //LED Control register
1207 #define ADIN2111_LED_CNTRL_LED1_EN 0x8000
1208 #define ADIN2111_LED_CNTRL_LED1_LINK_ST_QUALIFY 0x4000
1209 #define ADIN2111_LED_CNTRL_LED1_MODE 0x2000
1210 #define ADIN2111_LED_CNTRL_LED1_FUNCTION 0x1F00
1211 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_TXRX_ACTIVITY 0x0000
1212 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_TX_ACTIVITY 0x0100
1213 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_ACTIVITY 0x0200
1214 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_ONLY 0x0300
1215 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TXRX_ACTIVITY 0x0400
1216 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TX_ACTIVITY 0x0500
1217 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_RX_ACTIVITY 0x0600
1218 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_ER 0x0700
1219 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_TX_ER 0x0800
1220 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_RX_ER 0x0900
1221 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_RX_TX_ER 0x0A00
1222 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TX_SOP 0x0B00
1223 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_RX_SOP 0x0C00
1224 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_ON 0x0D00
1225 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_OFF 0x0E00
1226 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_BLINK 0x0F00
1227 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TX_LEVEL_2P4 0x1000
1228 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TX_LEVEL_1P0 0x1100
1229 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_MASTER 0x1200
1230 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_SLAVE 0x1300
1231 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_INCOMPATIBLE_LINK_CFG 0x1400
1232 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_AN_LINK_GOOD 0x1500
1233 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_AN_COMPLETE 0x1600
1234 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TS_TIMER 0x1700
1235 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_LOC_RCVR_STATUS 0x1800
1236 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_REM_RCVR_STATUS 0x1900
1237 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_CLK25_REF 0x1A00
1238 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_TX_TCLK 0x1B00
1239 #define ADIN2111_LED_CNTRL_LED1_FUNCTION_CLK_120MHZ 0x1C00
1240 #define ADIN2111_LED_CNTRL_LED0_EN 0x0080
1241 #define ADIN2111_LED_CNTRL_LED0_LINK_ST_QUALIFY 0x0040
1242 #define ADIN2111_LED_CNTRL_LED0_MODE 0x0020
1243 #define ADIN2111_LED_CNTRL_LED0_FUNCTION 0x001F
1244 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_TXRX_ACTIVITY 0x0000
1245 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_TX_ACTIVITY 0x0001
1246 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_ACTIVITY 0x0002
1247 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_ONLY 0x0003
1248 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TXRX_ACTIVITY 0x0004
1249 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TX_ACTIVITY 0x0005
1250 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_RX_ACTIVITY 0x0006
1251 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_ER 0x0007
1252 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_TX_ER 0x0008
1253 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_RX_ER 0x0009
1254 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_RX_TX_ER 0x000A
1255 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TX_SOP 0x000B
1256 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_RX_SOP 0x000C
1257 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_ON 0x000D
1258 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_OFF 0x000E
1259 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_BLINK 0x000F
1260 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TX_LEVEL_2P4 0x0010
1261 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TX_LEVEL_1P0 0x0011
1262 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_MASTER 0x0012
1263 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_SLAVE 0x0013
1264 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_INCOMPATIBLE_LINK_CFG 0x0014
1265 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_AN_LINK_GOOD 0x0015
1266 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_AN_COMPLETE 0x0016
1267 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TS_TIMER 0x0017
1268 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_LOC_RCVR_STATUS 0x0018
1269 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_REM_RCVR_STATUS 0x0019
1270 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_CLK25_REF 0x001A
1271 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_TX_TCLK 0x001B
1272 #define ADIN2111_LED_CNTRL_LED0_FUNCTION_CLK_120MHZ 0x001C
1273 
1274 //LED Polarity register
1275 #define ADIN2111_LED_POLARITY_LED1_POLARITY 0x000C
1276 #define ADIN2111_LED_POLARITY_LED1_POLARITY_AUTOSENSE 0x0000
1277 #define ADIN2111_LED_POLARITY_LED1_POLARITY_ACTIVE_HIGH 0x0004
1278 #define ADIN2111_LED_POLARITY_LED1_POLARITY_ACTIVE_LOW 0x0008
1279 #define ADIN2111_LED_POLARITY_LED0_POLARITY 0x0003
1280 #define ADIN2111_LED_POLARITY_LED0_POLARITY_AUTOSENSE 0x0000
1281 #define ADIN2111_LED_POLARITY_LED0_POLARITY_ACTIVE_HIGH 0x0001
1282 #define ADIN2111_LED_POLARITY_LED0_POLARITY_ACTIVE_LOW 0x0002
1283 
1284 //Vendor Specific MMD 2 Device Identifier High register
1285 #define ADIN2111_MMD2_DEV_ID1_MMD2_DEV_ID1 0xFFFF
1286 #define ADIN2111_MMD2_DEV_ID1_MMD2_DEV_ID1_DEFAULT 0x0283
1287 
1288 //Vendor Specific MMD 2 Device Identifier Low register
1289 #define ADIN2111_MMD2_DEV_ID2_MMD2_DEV_ID2_OUI 0xFC00
1290 #define ADIN2111_MMD2_DEV_ID2_MMD2_DEV_ID2_OUI_DEFAULT 0xBC00
1291 #define ADIN2111_MMD2_DEV_ID2_MMD2_MODEL_NUM 0x03F0
1292 #define ADIN2111_MMD2_DEV_ID2_MMD2_MODEL_NUM_DEFAULT 0x00A0
1293 #define ADIN2111_MMD2_DEV_ID2_MMD2_REV_NUM 0x000F
1294 #define ADIN2111_MMD2_DEV_ID2_MMD2_REV_NUM_DEFAULT 0x0001
1295 
1296 //Vendor Specific MMD 2 Status register
1297 #define ADIN2111_MMD2_STATUS_MMD2_STATUS 0xC000
1298 #define ADIN2111_MMD2_STATUS_MMD2_STATUS_DEV_RESP 0x8000
1299 
1300 //PHY Subsystem Interrupt Status register
1301 #define ADIN2111_PHY_SUBSYS_IRQ_STATUS_MAC_IF_FC_FG_IRQ_LH 0x4000
1302 #define ADIN2111_PHY_SUBSYS_IRQ_STATUS_MAC_IF_EBUF_ERR_IRQ_LH 0x2000
1303 #define ADIN2111_PHY_SUBSYS_IRQ_STATUS_AN_STAT_CHNG_IRQ_LH 0x0800
1304 #define ADIN2111_PHY_SUBSYS_IRQ_STATUS_LINK_STAT_CHNG_LH 0x0002
1305 
1306 //PHY Subsystem Interrupt Mask register
1307 #define ADIN2111_PHY_SUBSYS_IRQ_MASK_MAC_IF_FC_FG_IRQ_EN 0x4000
1308 #define ADIN2111_PHY_SUBSYS_IRQ_MASK_MAC_IF_EBUF_ERR_IRQ_EN 0x2000
1309 #define ADIN2111_PHY_SUBSYS_IRQ_MASK_AN_STAT_CHNG_IRQ_EN 0x0800
1310 #define ADIN2111_PHY_SUBSYS_IRQ_MASK_LINK_STAT_CHNG_IRQ_EN 0x0002
1311 
1312 //Frame Checker Enable register
1313 #define ADIN2111_FC_EN_FC_EN 0x0001
1314 
1315 //Frame Checker Interrupt Enable register
1316 #define ADIN2111_FC_IRQ_EN_FC_IRQ_EN 0x0001
1317 
1318 //Frame Checker Transmit Select register
1319 #define ADIN2111_FC_TX_SEL_FC_TX_SEL 0x0001
1320 
1321 //Frame Generator Enable register
1322 #define ADIN2111_FG_EN_FG_EN 0x0001
1323 
1324 //Frame Generator Control/Restart register
1325 #define ADIN2111_FG_CNTRL_RSTRT_FG_RSTRT 0x0008
1326 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL 0x0007
1327 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_NO_FRAMES 0x0000
1328 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_RANDOM 0x0001
1329 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_ALL_ZEROS 0x0002
1330 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_ALL_ONES 0x0003
1331 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_ALT 0x0004
1332 #define ADIN2111_FG_CNTRL_RSTRT_FG_CNTRL_DEC 0x0005
1333 
1334 //Frame Generator Continuous Mode Enable register
1335 #define ADIN2111_FG_CONT_MODE_EN_FG_CONT_MODE_EN 0x0001
1336 
1337 //Frame Generator Interrupt Enable register
1338 #define ADIN2111_FG_IRQ_EN_FG_IRQ_EN 0x0001
1339 
1340 //Frame Generator Done register
1341 #define ADIN2111_FG_DONE_FG_DONE 0x0001
1342 
1343 //MAC Interface Loopbacks Configuration register
1344 #define ADIN2111_MAC_IF_LOOPBACK_MAC_IF_REM_LB_RX_SUP_EN 0x0008
1345 #define ADIN2111_MAC_IF_LOOPBACK_MAC_IF_REM_LB_EN 0x0004
1346 #define ADIN2111_MAC_IF_LOOPBACK_MAC_IF_LB_TX_SUP_EN 0x0002
1347 #define ADIN2111_MAC_IF_LOOPBACK_MAC_IF_LB_EN 0x0001
1348 
1349 //MAC Start Of Packet (SOP) Generation Control register
1350 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_LEN_CHK_EN 0x0020
1351 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_SFD_EN 0x0010
1352 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_DET_EN 0x0008
1353 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_LEN_CHK_EN 0x0004
1354 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_SFD_EN 0x0002
1355 #define ADIN2111_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_DET_EN 0x0001
1356 
1357 //MAC address filtering table
1358 #define ADIN2111_ADDR_FILT_UPRn(index) (ADIN2111_ADDR_FILT_UPR0 + ((index) * 2))
1359 #define ADIN2111_ADDR_FILT_LWRn(index) (ADIN2111_ADDR_FILT_LWR0 + ((index) * 2))
1360 #define ADIN2111_ADDR_MSK_UPRn(index) (ADIN2111_ADDR_MSK_UPR0 + ((index) * 2))
1361 #define ADIN2111_ADDR_MSK_LWRn(index) (ADIN2111_ADDR_MSK_LWR0 + ((index) * 2))
1362 
1363 //C++ guard
1364 #ifdef __cplusplus
1365 extern "C" {
1366 #endif
1367 
1368 //ADIN2111 driver
1369 extern const NicDriver adin2111Driver;
1370 
1371 //ADIN2111 related functions
1372 error_t adin2111Init(NetInterface *interface);
1373 void adin2111InitHook(NetInterface *interface);
1374 
1375 void adin2111Tick(NetInterface *interface);
1376 
1377 void adin2111EnableIrq(NetInterface *interface);
1378 void adin2111DisableIrq(NetInterface *interface);
1380 void adin2111EventHandler(NetInterface *interface);
1382 
1384  const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary);
1385 
1386 error_t adin2111ReceivePacket(NetInterface *interface, uint8_t port);
1387 
1389 
1390 bool_t adin2111GetLinkState(NetInterface *interface, uint8_t port);
1391 
1392 void adin2111WriteReg(NetInterface *interface, uint16_t address,
1393  uint32_t data);
1394 
1395 uint32_t adin2111ReadReg(NetInterface *interface, uint16_t address);
1396 void adin2111DumpReg(NetInterface *interface);
1397 
1398 void adin2111WritePhyReg(NetInterface *interface, uint8_t port,
1399  uint8_t address, uint16_t data);
1400 
1401 uint16_t adin2111ReadPhyReg(NetInterface *interface, uint8_t port,
1402  uint8_t address);
1403 
1404 void adin2111DumpPhyReg(NetInterface *interface, uint8_t port);
1405 
1406 void adin2111WriteMmdReg(NetInterface *interface, uint8_t port,
1407  uint8_t devAddr, uint16_t regAddr, uint16_t data);
1408 
1409 uint16_t adin2111ReadMmdReg(NetInterface *interface, uint8_t port,
1410  uint8_t devAddr, uint16_t regAddr);
1411 
1412 void adin2111WriteFifo(NetInterface *interface, uint16_t header,
1413  const uint8_t *data, size_t length);
1414 
1415 void adin2111ReadFifo(NetInterface *interface, uint8_t port,
1416  uint16_t *header, uint8_t *data, size_t length);
1417 
1418 uint32_t adin2111CalcParity(uint32_t data);
1419 uint8_t adin2111CalcCrc(const uint8_t *data, size_t length);
1420 
1421 //C++ guard
1422 #ifdef __cplusplus
1423 }
1424 #endif
1425 
1426 #endif
int bool_t
Definition: compiler_port.h:63
bool_t adin2111GetLinkState(NetInterface *interface, uint8_t port)
Get link state.
uint32_t adin2111CalcParity(uint32_t data)
Calculate parity bit over a 32-bit data.
void adin2111EventHandler(NetInterface *interface)
ADIN2111 event handler.
Structure describing a buffer that spans multiple chunks.
Definition: net_mem.h:89
uint8_t data[]
Definition: ethernet.h:224
void adin2111EnableIrq(NetInterface *interface)
Enable interrupts.
void adin2111WriteReg(NetInterface *interface, uint16_t address, uint32_t data)
Write SPI register.
void adin2111WritePhyReg(NetInterface *interface, uint8_t port, uint8_t address, uint16_t data)
Write PHY register.
error_t
Error codes.
Definition: error.h:43
void adin2111DumpPhyReg(NetInterface *interface, uint8_t port)
Dump PHY registers for debugging purpose.
void adin2111Tick(NetInterface *interface)
ADIN2111 timer handler.
void adin2111DumpReg(NetInterface *interface)
Dump SPI registers for debugging purpose.
#define NetInterface
Definition: net.h:40
#define NetTxAncillary
Definition: net_misc.h:36
bool_t adin2111IrqHandler(NetInterface *interface)
ADIN2111 interrupt service routine.
uint8_t length
Definition: tcp.h:375
uint8_t adin2111CalcCrc(const uint8_t *data, size_t length)
CRC calculation.
error_t adin2111Init(NetInterface *interface)
ADIN2111 Ethernet switch initialization.
void adin2111WriteMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
void adin2111DisableIrq(NetInterface *interface)
Disable interrupts.
uint16_t port
Definition: dns_common.h:272
error_t adin2111UpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
uint16_t regAddr
uint16_t adin2111ReadPhyReg(NetInterface *interface, uint8_t port, uint8_t address)
Read PHY register.
Ipv6Addr address[]
Definition: ipv6.h:347
void adin2111LinkChangeEventHandler(NetInterface *interface)
ADIN2111 link status change event handler.
uint32_t adin2111ReadReg(NetInterface *interface, uint16_t address)
Read SPI register.
void adin2111WriteFifo(NetInterface *interface, uint16_t header, const uint8_t *data, size_t length)
Write TX FIFO.
Network interface controller abstraction layer.
void adin2111ReadFifo(NetInterface *interface, uint8_t port, uint16_t *header, uint8_t *data, size_t length)
Read RX FIFO.
error_t adin2111SendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.
error_t adin2111ReceivePacket(NetInterface *interface, uint8_t port)
Receive a packet.
const NicDriver adin2111Driver
ADIN2111 driver.
NIC driver.
Definition: nic.h:286
uint16_t adin2111ReadMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
void adin2111InitHook(NetInterface *interface)
ADIN2111 custom configuration.