adin1100_driver.h
Go to the documentation of this file.
1 /**
2  * @file adin1100_driver.h
3  * @brief ADIN1100 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 _ADIN1100_DRIVER_H
32 #define _ADIN1100_DRIVER_H
33 
34 //Dependencies
35 #include "core/nic.h"
36 
37 //PHY address
38 #ifndef ADIN1100_PHY_ADDR
39  #define ADIN1100_PHY_ADDR 0
40 #elif (ADIN1100_PHY_ADDR < 0 || ADIN1100_PHY_ADDR > 31)
41  #error ADIN1100_PHY_ADDR parameter is not valid
42 #endif
43 
44 //ADIN1100 PHY registers
45 #define ADIN1100_MI_CONTROL 0x00
46 #define ADIN1100_MI_STATUS 0x01
47 #define ADIN1100_MI_PHY_ID1 0x02
48 #define ADIN1100_MI_PHY_ID2 0x03
49 #define ADIN1100_MMD_ACCESS_CNTRL 0x0D
50 #define ADIN1100_MMD_ACCESS 0x0E
51 
52 //ADIN1100 MMD registers
53 #define ADIN1100_PMA_PMD_CNTRL1 0x01, 0x0000
54 #define ADIN1100_PMA_PMD_STAT1 0x01, 0x0001
55 #define ADIN1100_PMA_PMD_DEVS_IN_PKG1 0x01, 0x0005
56 #define ADIN1100_PMA_PMD_DEVS_IN_PKG2 0x01, 0x0006
57 #define ADIN1100_PMA_PMD_CNTRL2 0x01, 0x0007
58 #define ADIN1100_PMA_PMD_STAT2 0x01, 0x0008
59 #define ADIN1100_PMA_PMD_TX_DIS 0x01, 0x0009
60 #define ADIN1100_PMA_PMD_EXT_ABILITY 0x01, 0x000B
61 #define ADIN1100_PMA_PMD_BT1_ABILITY 0x01, 0x0012
62 #define ADIN1100_PMA_PMD_BT1_CONTROL 0x01, 0x0834
63 #define ADIN1100_B10L_PMA_CNTRL 0x01, 0x08F6
64 #define ADIN1100_B10L_PMA_STAT 0x01, 0x08F7
65 #define ADIN1100_B10L_TEST_MODE_CNTRL 0x01, 0x08F8
66 #define ADIN1100_B10L_PMA_LINK_STAT 0x01, 0x8302
67 #define ADIN1100_MSE_VAL 0x01, 0x830B
68 #define ADIN1100_PCS_CNTRL1 0x03, 0x0000
69 #define ADIN1100_PCS_STAT1 0x03, 0x0001
70 #define ADIN1100_PCS_DEVS_IN_PKG1 0x03, 0x0005
71 #define ADIN1100_PCS_DEVS_IN_PKG2 0x03, 0x0006
72 #define ADIN1100_PCS_STAT2 0x03, 0x0008
73 #define ADIN1100_B10L_PCS_CNTRL 0x03, 0x08E6
74 #define ADIN1100_B10L_PCS_STAT 0x03, 0x08E7
75 #define ADIN1100_AN_DEVS_IN_PKG1 0x07, 0x0005
76 #define ADIN1100_AN_DEVS_IN_PKG2 0x07, 0x0006
77 #define ADIN1100_AN_CONTROL 0x07, 0x0200
78 #define ADIN1100_AN_STATUS 0x07, 0x0201
79 #define ADIN1100_AN_ADV_ABILITY_L 0x07, 0x0202
80 #define ADIN1100_AN_ADV_ABILITY_M 0x07, 0x0203
81 #define ADIN1100_AN_ADV_ABILITY_H 0x07, 0x0204
82 #define ADIN1100_AN_LP_ADV_ABILITY_L 0x07, 0x0205
83 #define ADIN1100_AN_LP_ADV_ABILITY_M 0x07, 0x0206
84 #define ADIN1100_AN_LP_ADV_ABILITY_H 0x07, 0x0207
85 #define ADIN1100_AN_NEXT_PAGE_L 0x07, 0x0208
86 #define ADIN1100_AN_NEXT_PAGE_M 0x07, 0x0209
87 #define ADIN1100_AN_NEXT_PAGE_H 0x07, 0x020A
88 #define ADIN1100_AN_LP_NEXT_PAGE_L 0x07, 0x020B
89 #define ADIN1100_AN_LP_NEXT_PAGE_M 0x07, 0x020C
90 #define ADIN1100_AN_LP_NEXT_PAGE_H 0x07, 0x020D
91 #define ADIN1100_AN_B10_ADV_ABILITY 0x07, 0x020E
92 #define ADIN1100_AN_B10_LP_ADV_ABILITY 0x07, 0x020F
93 #define ADIN1100_AN_FRC_MODE_EN 0x07, 0x8000
94 #define ADIN1100_AN_STATUS_EXTRA 0x07, 0x8001
95 #define ADIN1100_AN_PHY_INST_STATUS 0x07, 0x8030
96 #define ADIN1100_MMD1_DEV_ID1 0x1E, 0x0002
97 #define ADIN1100_MMD1_DEV_ID2 0x1E, 0x0003
98 #define ADIN1100_MMD1_DEVS_IN_PKG1 0x1E, 0x0005
99 #define ADIN1100_MMD1_DEVS_IN_PKG2 0x1E, 0x0006
100 #define ADIN1100_MMD1_STATUS 0x1E, 0x0008
101 #define ADIN1100_CRSM_IRQ_STATUS 0x1E, 0x0010
102 #define ADIN1100_CRSM_IRQ_MASK 0x1E, 0x0020
103 #define ADIN1100_CRSM_SFT_RST 0x1E, 0x8810
104 #define ADIN1100_CRSM_SFT_PD_CNTRL 0x1E, 0x8812
105 #define ADIN1100_CRSM_PHY_SUBSYS_RST 0x1E, 0x8814
106 #define ADIN1100_CRSM_MAC_IF_RST 0x1E, 0x8815
107 #define ADIN1100_CRSM_STAT 0x1E, 0x8818
108 #define ADIN1100_CRSM_PMG_CNTRL 0x1E, 0x8819
109 #define ADIN1100_CRSM_MAC_IF_CFG 0x1E, 0x882B
110 #define ADIN1100_CRSM_DIAG_CLK_CTRL 0x1E, 0x882C
111 #define ADIN1100_MGMT_PRT_PKG 0x1E, 0x8C22
112 #define ADIN1100_MGMT_MDIO_CNTRL 0x1E, 0x8C30
113 #define ADIN1100_DIGIO_PINMUX 0x1E, 0x8C56
114 #define ADIN1100_DIGIO_PINMUX2 0x1E, 0x8C57
115 #define ADIN1100_LED0_BLINK_TIME_CNTRL 0x1E, 0x8C80
116 #define ADIN1100_LED1_BLINK_TIME_CNTRL 0x1E, 0x8C81
117 #define ADIN1100_LED_CNTRL 0x1E, 0x8C82
118 #define ADIN1100_LED_POLARITY 0x1E, 0x8C83
119 #define ADIN1100_MMD2_DEV_ID1 0x1F, 0x0002
120 #define ADIN1100_MMD2_DEV_ID2 0x1F, 0x0003
121 #define ADIN1100_MMD2_DEVS_IN_PKG1 0x1F, 0x0005
122 #define ADIN1100_MMD2_DEVS_IN_PKG2 0x1F, 0x0006
123 #define ADIN1100_MMD2_STATUS 0x1F, 0x0008
124 #define ADIN1100_PHY_SUBSYS_IRQ_STATUS 0x1F, 0x0011
125 #define ADIN1100_PHY_SUBSYS_IRQ_MASK 0x1F, 0x0021
126 #define ADIN1100_FC_EN 0x1F, 0x8001
127 #define ADIN1100_FC_IRQ_EN 0x1F, 0x8004
128 #define ADIN1100_FC_TX_SEL 0x1F, 0x8005
129 #define ADIN1100_RX_ERR_CNT 0x1F, 0x8008
130 #define ADIN1100_FC_FRM_CNT_H 0x1F, 0x8009
131 #define ADIN1100_FC_FRM_CNT_L 0x1F, 0x800A
132 #define ADIN1100_FC_LEN_ERR_CNT 0x1F, 0x800B
133 #define ADIN1100_FC_ALGN_ERR_CNT 0x1F, 0x800C
134 #define ADIN1100_FC_SYMB_ERR_CNT 0x1F, 0x800D
135 #define ADIN1100_FC_OSZ_CNT 0x1F, 0x800E
136 #define ADIN1100_FC_USZ_CNT 0x1F, 0x800F
137 #define ADIN1100_FC_ODD_CNT 0x1F, 0x8010
138 #define ADIN1100_FC_ODD_PRE_CNT 0x1F, 0x8011
139 #define ADIN1100_FC_FALSE_CARRIER_CNT 0x1F, 0x8013
140 #define ADIN1100_FG_EN 0x1F, 0x8020
141 #define ADIN1100_FG_CNTRL_RSTRT 0x1F, 0x8021
142 #define ADIN1100_FG_CONT_MODE_EN 0x1F, 0x8022
143 #define ADIN1100_FG_IRQ_EN 0x1F, 0x8023
144 #define ADIN1100_FG_FRM_LEN 0x1F, 0x8025
145 #define ADIN1100_FG_IFG_LEN 0x1F, 0x8026
146 #define ADIN1100_FG_NFRM_H 0x1F, 0x8027
147 #define ADIN1100_FG_NFRM_L 0x1F, 0x8028
148 #define ADIN1100_FG_DONE 0x1F, 0x8029
149 #define ADIN1100_RMII_CFG 0x1F, 0x8050
150 #define ADIN1100_MAC_IF_LOOPBACK 0x1F, 0x8055
151 #define ADIN1100_MAC_IF_SOP_CNTRL 0x1F, 0x805A
152 
153 //MII Control register
154 #define ADIN1100_MI_CONTROL_MI_SFT_RST 0x8000
155 #define ADIN1100_MI_CONTROL_MI_LOOPBACK 0x4000
156 #define ADIN1100_MI_CONTROL_MI_SPEED_SEL_LSB 0x2000
157 #define ADIN1100_MI_CONTROL_MI_AN_EN 0x1000
158 #define ADIN1100_MI_CONTROL_MI_SFT_PD 0x0800
159 #define ADIN1100_MI_CONTROL_MI_ISOLATE 0x0400
160 #define ADIN1100_MI_CONTROL_MI_FULL_DUPLEX 0x0100
161 #define ADIN1100_MI_CONTROL_MI_COLTEST 0x0080
162 #define ADIN1100_MI_CONTROL_MI_SPEED_SEL_MSB 0x0040
163 #define ADIN1100_MI_CONTROL_MI_UNIDIR_EN 0x0020
164 
165 //MII Status register
166 #define ADIN1100_MI_STATUS_MI_T4_SPRT 0x8000
167 #define ADIN1100_MI_STATUS_MI_FD100_SPRT 0x4000
168 #define ADIN1100_MI_STATUS_MI_HD100_SPRT 0x2000
169 #define ADIN1100_MI_STATUS_MI_FD10_SPRT 0x1000
170 #define ADIN1100_MI_STATUS_MI_HD10_SPRT 0x0800
171 #define ADIN1100_MI_STATUS_MI_FD_T2_SPRT 0x0400
172 #define ADIN1100_MI_STATUS_MI_HD_T2_SPRT 0x0200
173 #define ADIN1100_MI_STATUS_MI_EXT_STAT_SPRT 0x0100
174 #define ADIN1100_MI_STATUS_MI_UNIDIR_ABLE 0x0080
175 #define ADIN1100_MI_STATUS_MI_MF_PREAM_SUP_ABLE 0x0040
176 #define ADIN1100_MI_STATUS_MI_AN_COMPLETE 0x0020
177 #define ADIN1100_MI_STATUS_MI_REM_FLT 0x0010
178 #define ADIN1100_MI_STATUS_MI_AN_ABLE 0x0008
179 #define ADIN1100_MI_STATUS_MI_LINK_STAT_LAT 0x0004
180 #define ADIN1100_MI_STATUS_MI_JABBER_DET 0x0002
181 #define ADIN1100_MI_STATUS_MI_EXT_CAPABLE 0x0001
182 
183 //PHY Identifier 1 register
184 #define ADIN1100_MI_PHY_ID1_MI_PHY_ID1 0xFFFF
185 #define ADIN1100_MI_PHY_ID1_MI_PHY_ID1_DEFAULT 0x0283
186 
187 //PHY Identifier 2 register
188 #define ADIN1100_MI_PHY_ID2_MI_PHY_ID2_OUI 0xFC00
189 #define ADIN1100_MI_PHY_ID2_MI_PHY_ID2_OUI_DEFAULT 0xBC00
190 #define ADIN1100_MI_PHY_ID2_MI_MODEL_NUM 0x03F0
191 #define ADIN1100_MI_PHY_ID2_MI_MODEL_NUM_DEFAULT 0x0080
192 #define ADIN1100_MI_PHY_ID2_MI_REV_NUM 0x000F
193 #define ADIN1100_MI_PHY_ID2_MI_REV_NUM_DEFAULT 0x0001
194 
195 //MMD Access Control register
196 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION 0xC000
197 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_ADDR 0x0000
198 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_NO_POST_INC 0x4000
199 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_POST_INC_RW 0x8000
200 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_FUNCTION_DATA_POST_INC_W 0xC000
201 #define ADIN1100_MMD_ACCESS_CNTRL_MMD_ACR_DEVAD 0x001F
202 
203 //PMA/PMD Control 1 register
204 #define ADIN1100_PMA_PMD_CNTRL1_PMA_SFT_RST 0x8000
205 #define ADIN1100_PMA_PMD_CNTRL1_PMA_SFT_PD 0x0800
206 #define ADIN1100_PMA_PMD_CNTRL1_LB_PMA_LOC_EN 0x0001
207 
208 //PMA/PMD Status 1 register
209 #define ADIN1100_PMA_PMD_STAT1_PMA_LINK_STAT_OK_LL 0x0004
210 #define ADIN1100_PMA_PMD_STAT1_PMA_SFT_PD_ABLE 0x0002
211 
212 //PMA/PMD Control 2 register
213 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL 0x007F
214 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_CX4 0x0000
215 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_EW 0x0001
216 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LW 0x0002
217 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_SW 0x0003
218 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LX4 0x0004
219 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_ER 0x0005
220 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LR 0x0006
221 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_SR 0x0007
222 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_LRM 0x0008
223 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_T 0x0009
224 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_KX4 0x000A
225 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_KR 0x000B
226 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_1000BASE_T 0x000C
227 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_1000BASE_KX 0x000D
228 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100BASE_TX 0x000E
229 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10BASE_T 0x000F
230 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D1 0x0010
231 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D2 0x0011
232 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D3 0x0012
233 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D1 0x0013
234 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D2 0x0014
235 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D3 0x0015
236 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U1 0x0016
237 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U2 0x0017
238 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U3 0x0018
239 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U1 0x0019
240 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U3 0x001A
241 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_RESERVED 0x001B
242 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_D4 0x001C
243 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_D4 0x001D
244 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GBASE_PR_U4 0x001E
245 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10_1GBASE_PRX_U4 0x001F
246 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_KR4 0x0020
247 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_CR4 0x0021
248 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_SR4 0x0022
249 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_LR4 0x0023
250 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_FR 0x0024
251 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_ER4 0x0025
252 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_40GBASE_T 0x0026
253 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_CR10 0x0028
254 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_SR10 0x0029
255 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_LR4 0x002A
256 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_ER4 0x002B
257 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_KP4 0x002C
258 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_KR4 0x002D
259 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_CR4 0x002E
260 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_100GBASE_SR4 0x002F
261 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_2_5GBASE_T 0x0030
262 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_5GBASE_T 0x0031
263 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GPASS_XR_D 0x0032
264 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_10GPASS_XR_U 0x0033
265 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_BASE_H 0x0034
266 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_LR 0x0035
267 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_ER 0x0036
268 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_T 0x0037
269 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_CR 0x0038
270 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_KR 0x0039
271 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_25GBASE_SR 0x003A
272 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_BASE_T1 0x003D
273 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_DR4 0x0053
274 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_FR4 0x0054
275 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_200GBASE_LR4 0x0055
276 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_SR16 0x0059
277 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_DR4 0x005A
278 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_FR8 0x005B
279 #define ADIN1100_PMA_PMD_CNTRL2_PMA_PMD_TYPE_SEL_400GBASE_LR8 0x005C
280 
281 //PMA/PMD Status 2 register
282 #define ADIN1100_PMA_PMD_STAT2_PMA_PMD_PRESENT 0xC000
283 #define ADIN1100_PMA_PMD_STAT2_PMA_PMD_EXT_ABLE 0x0200
284 #define ADIN1100_PMA_PMD_STAT2_PMA_PMD_TX_DIS_ABLE 0x0100
285 #define ADIN1100_PMA_PMD_STAT2_LB_PMA_LOC_ABLE 0x0001
286 
287 //PMA/PMD Transmit Disable register
288 #define ADIN1100_PMA_PMD_TX_DIS_PMA_TX_DIS 0x0001
289 
290 //PMA/PMD Extended Abilities register
291 #define ADIN1100_PMA_PMD_EXT_ABILITY_PMA_PMD_BT1_ABLE 0x0800
292 
293 //BASE-T1 PMA/PMD Extended Ability register
294 #define ADIN1100_PMA_PMD_BT1_ABILITY_B10S_ABILITY 0x0008
295 #define ADIN1100_PMA_PMD_BT1_ABILITY_B10L_ABILITY 0x0004
296 #define ADIN1100_PMA_PMD_BT1_ABILITY_B1000_ABILITY 0x0002
297 #define ADIN1100_PMA_PMD_BT1_ABILITY_B100_ABILITY 0x0001
298 
299 //BASE-T1 PMA/PMD Control register
300 #define ADIN1100_PMA_PMD_BT1_CONTROL_CFG_MST 0x4000
301 #define ADIN1100_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL 0x000F
302 #define ADIN1100_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_100BASE_T 0x0000
303 #define ADIN1100_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_1000BASE_T 0x0001
304 #define ADIN1100_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_10BASE_T1L 0x0002
305 #define ADIN1100_PMA_PMD_BT1_CONTROL_BT1_TYPE_SEL_10BASE_T1S 0x0003
306 
307 //10BASE-T1L PMA Control register
308 #define ADIN1100_B10L_PMA_CNTRL_B10L_TX_DIS_MODE_EN 0x4000
309 #define ADIN1100_B10L_PMA_CNTRL_B10L_TX_LVL_HI 0x1000
310 #define ADIN1100_B10L_PMA_CNTRL_B10L_EEE 0x0400
311 #define ADIN1100_B10L_PMA_CNTRL_B10L_LB_PMA_LOC_EN 0x0001
312 
313 //10BASE-T1L PMA Status register
314 #define ADIN1100_B10L_PMA_STAT_B10L_LB_PMA_LOC_ABLE 0x2000
315 #define ADIN1100_B10L_PMA_STAT_B10L_TX_LVL_HI_ABLE 0x1000
316 #define ADIN1100_B10L_PMA_STAT_B10L_PMA_SFT_PD_ABLE 0x0800
317 #define ADIN1100_B10L_PMA_STAT_B10L_EEE_ABLE 0x0400
318 
319 //10BASE-T1L Test Mode Control register
320 #define ADIN1100_B10L_TEST_MODE_CNTRL_B10L_TX_TEST_MODE 0xE000
321 
322 //10BASE-T1L PMA Link Status register
323 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_REM_RCVR_STAT_OK_LL 0x0200
324 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_REM_RCVR_STAT_OK 0x0100
325 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_LOC_RCVR_STAT_OK_LL 0x0080
326 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_LOC_RCVR_STAT_OK 0x0040
327 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_DSCR_STAT_OK_LL 0x0020
328 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_DSCR_STAT_OK 0x0010
329 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_LINK_STAT_OK_LL 0x0002
330 #define ADIN1100_B10L_PMA_LINK_STAT_B10L_LINK_STAT_OK 0x0001
331 
332 //PCS Control 1 register
333 #define ADIN1100_PCS_CNTRL1_PCS_SFT_RST 0x8000
334 #define ADIN1100_PCS_CNTRL1_LB_PCS_EN 0x4000
335 #define ADIN1100_PCS_CNTRL1_PCS_SFT_PD 0x0800
336 
337 //PCS Status 1 register
338 #define ADIN1100_PCS_STAT1_PCS_SFT_PD_ABLE 0x0002
339 
340 //PCS Status 2 register
341 #define ADIN1100_PCS_STAT2_PCS_PRESENT 0xC000
342 
343 //10BASE-T1L PCS Control register
344 #define ADIN1100_B10L_PCS_CNTRL_B10L_LB_PCS_EN 0x4000
345 
346 //10BASE-T1L PCS Status register
347 #define ADIN1100_B10L_PCS_STAT_B10L_PCS_DSCR_STAT_OK_LL 0x0004
348 
349 //BASE-T1 Autonegotiation Control register
350 #define ADIN1100_AN_CONTROL_AN_EN 0x1000
351 #define ADIN1100_AN_CONTROL_AN_RESTART 0x0200
352 
353 //BASE-T1 Autonegotiation Status register
354 #define ADIN1100_AN_STATUS_AN_PAGE_RX 0x0040
355 #define ADIN1100_AN_STATUS_AN_COMPLETE 0x0020
356 #define ADIN1100_AN_STATUS_AN_REMOTE_FAULT 0x0010
357 #define ADIN1100_AN_STATUS_AN_ABLE 0x0008
358 #define ADIN1100_AN_STATUS_AN_LINK_STATUS 0x0004
359 
360 //BASE-T1 Autonegotiation Advertisement L register
361 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_NEXT_PAGE_REQ 0x8000
362 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_ACK 0x4000
363 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_REMOTE_FAULT 0x2000
364 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_FORCE_MS 0x1000
365 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_PAUSE 0x0C00
366 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_SELECTOR 0x001F
367 #define ADIN1100_AN_ADV_ABILITY_L_AN_ADV_SELECTOR_DEFAULT 0x0001
368 
369 //BASE-T1 Autonegotiation Advertisement M register
370 #define ADIN1100_AN_ADV_ABILITY_M_AN_ADV_B10L 0x4000
371 #define ADIN1100_AN_ADV_ABILITY_M_AN_ADV_MST 0x0010
372 
373 //BASE-T1 Autonegotiation Advertisement H register
374 #define ADIN1100_AN_ADV_ABILITY_H_AN_ADV_B10L_TX_LVL_HI_ABL 0x2000
375 #define ADIN1100_AN_ADV_ABILITY_H_AN_ADV_B10L_TX_LVL_HI_REQ 0x1000
376 
377 //BASE-T1 Autonegotiation Link Partner Base Page Ability L register
378 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_NEXT_PAGE_REQ 0x8000
379 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_ACK 0x4000
380 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_REMOTE_FAULT 0x2000
381 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_FORCE_MS 0x1000
382 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_PAUSE 0x0C00
383 #define ADIN1100_AN_LP_ADV_ABILITY_L_AN_LP_ADV_SELECTOR 0x001F
384 
385 //BASE-T1 Autonegotiation Link Partner Base Page Ability M register
386 #define ADIN1100_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B10L 0x4000
387 #define ADIN1100_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B1000 0x0080
388 #define ADIN1100_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B10S_FD 0x0040
389 #define ADIN1100_AN_LP_ADV_ABILITY_M_AN_LP_ADV_B100 0x0020
390 #define ADIN1100_AN_LP_ADV_ABILITY_M_AN_LP_ADV_MST 0x0010
391 
392 //BASE-T1 Autonegotiation Link Partner Base Page Ability H register
393 #define ADIN1100_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_EEE 0x4000
394 #define ADIN1100_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_TX_LVL_HI_ABL 0x2000
395 #define ADIN1100_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10L_TX_LVL_HI_REQ 0x1000
396 #define ADIN1100_AN_LP_ADV_ABILITY_H_AN_LP_ADV_B10S_HD 0x0800
397 
398 //BASE-T1 Autonegotiation Next Page Transmit L register
399 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_NEXT_PAGE_REQ 0x8000
400 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_ACK 0x4000
401 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_MESSAGE_PAGE 0x2000
402 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_ACK2 0x1000
403 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_TOGGLE 0x0800
404 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE 0x07FF
405 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_NULL 0x0001
406 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_OUI_TAGGED 0x0005
407 #define ADIN1100_AN_NEXT_PAGE_L_AN_NP_MESSAGE_CODE_AN_DEV_ID_TAG 0x0006
408 
409 //BASE-T1 Autonegotiation Next Page Transmit M register
410 #define ADIN1100_AN_NEXT_PAGE_M_AN_NP_UNFORMATTED1 0xFFFF
411 
412 //BASE-T1 Autonegotiation Next Page Transmit H register
413 #define ADIN1100_AN_NEXT_PAGE_H_AN_NP_UNFORMATTED2 0xFFFF
414 
415 //BASE-T1 Autonegotiation Link Partner Next Page Ability L register
416 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_NEXT_PAGE_REQ 0x8000
417 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_ACK 0x4000
418 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_PAGE 0x2000
419 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_ACK2 0x1000
420 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_TOGGLE 0x0800
421 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE 0x07FF
422 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_NULL 0x0001
423 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_OUI_TAGGED 0x0005
424 #define ADIN1100_AN_LP_NEXT_PAGE_L_AN_LP_NP_MESSAGE_CODE_AN_DEV_ID_TAG 0x0006
425 
426 //BASE-T1 Autonegotiation Link Partner Next Page Ability M register
427 #define ADIN1100_AN_LP_NEXT_PAGE_M_AN_LP_NP_UNFORMATTED1 0xFFFF
428 
429 //BASE-T1 Autonegotiation Link Partner Next Page Ability H register
430 #define ADIN1100_AN_LP_NEXT_PAGE_H_AN_LP_NP_UNFORMATTED2 0xFFFF
431 
432 //10BASE-T1 Autonegotiation Control register
433 #define ADIN1100_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L 0x8000
434 #define ADIN1100_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_EEE 0x4000
435 #define ADIN1100_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_TX_LVL_HI_ABL 0x2000
436 #define ADIN1100_AN_B10_ADV_ABILITY_AN_B10_ADV_B10L_TX_LVL_HI_REQ 0x1000
437 
438 //10BASE-T1 Autonegotiation Status register
439 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L 0x8000
440 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_EEE 0x4000
441 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_TX_LVL_HI_ABL 0x2000
442 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10L_TX_LVL_HI_REQ 0x1000
443 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10S_FD 0x0080
444 #define ADIN1100_AN_B10_LP_ADV_ABILITY_AN_B10_LP_ADV_B10S_HD 0x0040
445 
446 //Autonegotiation Forced Mode Enable register
447 #define ADIN1100_AN_FRC_MODE_EN_AN_FRC_MODE_EN 0x0001
448 
449 //Extra Autonegotiation Status register
450 #define ADIN1100_AN_STATUS_EXTRA_AN_LP_NP_RX 0x0400
451 #define ADIN1100_AN_STATUS_EXTRA_AN_INC_LINK 0x0200
452 #define ADIN1100_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN 0x0180
453 #define ADIN1100_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_NOT_RUN 0x0000
454 #define ADIN1100_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_SUCCESS_1_0V 0x0100
455 #define ADIN1100_AN_STATUS_EXTRA_AN_TX_LVL_RSLTN_SUCCESS_2_4V 0x0180
456 #define ADIN1100_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN 0x0060
457 #define ADIN1100_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_NOT_RUN 0x0000
458 #define ADIN1100_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_CONFIG_FAULT 0x0020
459 #define ADIN1100_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_SUCCESS_SLAVE 0x0040
460 #define ADIN1100_AN_STATUS_EXTRA_AN_MS_CONFIG_RSLTN_SUCCESS_MASTER 0x0060
461 #define ADIN1100_AN_STATUS_EXTRA_AN_HCD_TECH 0x001E
462 #define ADIN1100_AN_STATUS_EXTRA_AN_HCD_TECH_NULL 0x0000
463 #define ADIN1100_AN_STATUS_EXTRA_AN_HCD_TECH_10BASE_T1L 0x0002
464 #define ADIN1100_AN_STATUS_EXTRA_AN_LINK_GOOD 0x0001
465 
466 //PHY Instantaneous Status register
467 #define ADIN1100_AN_PHY_INST_STATUS_IS_AN_TX_EN 0x0010
468 #define ADIN1100_AN_PHY_INST_STATUS_IS_CFG_MST 0x0008
469 #define ADIN1100_AN_PHY_INST_STATUS_IS_CFG_SLV 0x0004
470 #define ADIN1100_AN_PHY_INST_STATUS_IS_TX_LVL_HI 0x0002
471 #define ADIN1100_AN_PHY_INST_STATUS_IS_TX_LVL_LO 0x0001
472 
473 //Vendor Specific 1 MMD Identifier High register
474 #define ADIN1100_MMD1_DEV_ID1_MMD1_DEV_ID1 0xFFFF
475 #define ADIN1100_MMD1_DEV_ID1_MMD1_DEV_ID1_DEFAULT 0x0283
476 
477 //Vendor Specific 1 MMD Identifier Low register
478 #define ADIN1100_MMD1_DEV_ID2_MMD1_DEV_ID2_OUI 0xFC00
479 #define ADIN1100_MMD1_DEV_ID2_MMD1_DEV_ID2_OUI_DEFAULT 0xBC00
480 #define ADIN1100_MMD1_DEV_ID2_MMD1_MODEL_NUM 0x03F0
481 #define ADIN1100_MMD1_DEV_ID2_MMD1_MODEL_NUM_DEFAULT 0x0080
482 #define ADIN1100_MMD1_DEV_ID2_MMD1_REV_NUM 0x000F
483 #define ADIN1100_MMD1_DEV_ID2_MMD1_REV_NUM_DEFAULT 0x0001
484 
485 //Vendor Specific 1 MMD Status register
486 #define ADIN1100_MMD1_STATUS_MMD1_STATUS 0xC000
487 #define ADIN1100_MMD1_STATUS_MMD1_STATUS_DEV_RESP 0x8000
488 
489 //System Interrupt Status register
490 #define ADIN1100_CRSM_IRQ_STATUS_CRSM_SW_IRQ_LH 0x8000
491 #define ADIN1100_CRSM_IRQ_STATUS_CRSM_HRD_RST_IRQ_LH 0x1000
492 
493 //System Interrupt Mask register
494 #define ADIN1100_CRSM_IRQ_MASK_CRSM_SW_IRQ_REQ 0x8000
495 #define ADIN1100_CRSM_IRQ_MASK_CRSM_HRD_RST_IRQ_EN 0x1000
496 
497 //Software Reset register
498 #define ADIN1100_CRSM_SFT_RST_CRSM_SFT_RST 0x0001
499 
500 //Software Power-Down Control register
501 #define ADIN1100_CRSM_SFT_PD_CNTRL_CRSM_SFT_PD 0x0001
502 
503 //PHY Subsystem Reset register
504 #define ADIN1100_CRSM_PHY_SUBSYS_RST_CRSM_PHY_SUBSYS_RST 0x0001
505 
506 //PHY MAC Interface Reset register
507 #define ADIN1100_CRSM_MAC_IF_RST_CRSM_MAC_IF_RST 0x0001
508 
509 //System Status register
510 #define ADIN1100_CRSM_STAT_CRSM_SFT_PD_RDY 0x0002
511 #define ADIN1100_CRSM_STAT_CRSM_SYS_RDY 0x0001
512 
513 //CRSM Power Management Control register
514 #define ADIN1100_CRSM_PMG_CNTRL_CRSM_FRC_OSC_EN 0x0001
515 
516 //MAC Interface Configuration register
517 #define ADIN1100_CRSM_MAC_IF_CFG_CRSM_RMII_CLK50 0x8000
518 #define ADIN1100_CRSM_MAC_IF_CFG_CRSM_RMII_CLK_EN 0x4000
519 #define ADIN1100_CRSM_MAC_IF_CFG_CRSM_RMII_MEDIA_CNV_EN 0x0100
520 #define ADIN1100_CRSM_MAC_IF_CFG_CRSM_RMII_EN 0x0010
521 #define ADIN1100_CRSM_MAC_IF_CFG_CRSM_RGMII_EN 0x0001
522 
523 //CRSM Diagnostics Clock Control register
524 #define ADIN1100_CRSM_DIAG_CLK_CTRL_CRSM_DIAG_CLK_EN 0x0001
525 
526 //Package Configuration Values register
527 #define ADIN1100_MGMT_PRT_PKG_MGMT_PRT_PKG_VAL 0x003F
528 
529 //MDIO Control register
530 #define ADIN1100_MGMT_MDIO_CNTRL_MGMT_GRP_MDIO_EN 0x0001
531 
532 //Pin Mux Configuration 1 register
533 #define ADIN1100_DIGIO_PINMUX_DIGIO_LED1_PINMUX 0x000E
534 #define ADIN1100_DIGIO_PINMUX_DIGIO_LED1_PINMUX_LED_1 0x0000
535 #define ADIN1100_DIGIO_PINMUX_DIGIO_LED1_PINMUX_NONE 0x000E
536 #define ADIN1100_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY 0x0001
537 #define ADIN1100_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY_ASSERT_HIGH 0x0000
538 #define ADIN1100_DIGIO_PINMUX_DIGIO_LINK_ST_POLARITY_ASSERT_LOW 0x0001
539 
540 //Pin Mux Configuration 2 register
541 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX 0x00F0
542 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RXD_3 0x0000
543 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RXD_2 0x0010
544 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RXD_1 0x0020
545 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RX_CLK 0x0030
546 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RX_DV 0x0040
547 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_RX_ER 0x0050
548 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TX_ER 0x0060
549 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TX_EN 0x0070
550 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TX_CLK 0x0080
551 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TXD_1 0x0090
552 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TXD_2 0x00A0
553 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_TXD_3 0x00B0
554 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_LINK_ST 0x00C0
555 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_LED_0 0x00D0
556 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_LED_1 0x00E0
557 #define ADIN1100_DIGIO_PINMUX2_DIGIO_RXSOP_PINMUX_OFF 0x00F0
558 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX 0x000F
559 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RXD_3 0x0000
560 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RXD_2 0x0001
561 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RXD_1 0x0002
562 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RX_CLK 0x0003
563 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RX_DV 0x0004
564 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_RX_ER 0x0005
565 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TX_ER 0x0006
566 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TX_EN 0x0007
567 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TX_CLK 0x0008
568 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TXD_1 0x0009
569 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TXD_2 0x000A
570 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_TXD_3 0x000B
571 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_LINK_ST 0x000C
572 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_LED_0 0x000D
573 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_LED_1 0x000E
574 #define ADIN1100_DIGIO_PINMUX2_DIGIO_TXSOP_PINMUX_OFF 0x000F
575 
576 //LED 0 On/Off Blink Time register
577 #define ADIN1100_LED0_BLINK_TIME_CNTRL_LED0_ON_N4MS 0xFF00
578 #define ADIN1100_LED0_BLINK_TIME_CNTRL_LED0_OFF_N4MS 0x00FF
579 
580 //LED 1 On/Off Blink Time register
581 #define ADIN1100_LED1_BLINK_TIME_CNTRL_LED1_ON_N4MS 0xFF00
582 #define ADIN1100_LED1_BLINK_TIME_CNTRL_LED1_OFF_N4MS 0x00FF
583 
584 //LED Control register
585 #define ADIN1100_LED_CNTRL_LED1_EN 0x8000
586 #define ADIN1100_LED_CNTRL_LED1_LINK_ST_QUALIFY 0x4000
587 #define ADIN1100_LED_CNTRL_LED1_MODE 0x2000
588 #define ADIN1100_LED_CNTRL_LED1_FUNCTION 0x1F00
589 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_TXRX_ACTIVITY 0x0000
590 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_TX_ACTIVITY 0x0100
591 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_ACTIVITY 0x0200
592 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_ONLY 0x0300
593 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TXRX_ACTIVITY 0x0400
594 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TX_ACTIVITY 0x0500
595 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_RX_ACTIVITY 0x0600
596 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_ER 0x0700
597 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LINKUP_RX_TX_ER 0x0800
598 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_RX_ER 0x0900
599 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_RX_TX_ER 0x0A00
600 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TX_SOP 0x0B00
601 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_RX_SOP 0x0C00
602 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_ON 0x0D00
603 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_OFF 0x0E00
604 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_BLINK 0x0F00
605 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TX_LEVEL_2P4 0x1000
606 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TX_LEVEL_1P0 0x1100
607 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_MASTER 0x1200
608 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_SLAVE 0x1300
609 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_INCOMPATIBLE_LINK_CFG 0x1400
610 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_AN_LINK_GOOD 0x1500
611 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_AN_COMPLETE 0x1600
612 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TS_TIMER 0x1700
613 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_LOC_RCVR_STATUS 0x1800
614 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_REM_RCVR_STATUS 0x1900
615 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_CLK25_REF 0x1A00
616 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_TX_TCLK 0x1B00
617 #define ADIN1100_LED_CNTRL_LED1_FUNCTION_CLK_120MHZ 0x1C00
618 #define ADIN1100_LED_CNTRL_LED0_EN 0x0080
619 #define ADIN1100_LED_CNTRL_LED0_LINK_ST_QUALIFY 0x0040
620 #define ADIN1100_LED_CNTRL_LED0_MODE 0x0020
621 #define ADIN1100_LED_CNTRL_LED0_FUNCTION 0x001F
622 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_TXRX_ACTIVITY 0x0000
623 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_TX_ACTIVITY 0x0001
624 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_ACTIVITY 0x0002
625 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_ONLY 0x0003
626 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TXRX_ACTIVITY 0x0004
627 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TX_ACTIVITY 0x0005
628 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_RX_ACTIVITY 0x0006
629 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_ER 0x0007
630 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LINKUP_RX_TX_ER 0x0008
631 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_RX_ER 0x0009
632 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_RX_TX_ER 0x000A
633 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TX_SOP 0x000B
634 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_RX_SOP 0x000C
635 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_ON 0x000D
636 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_OFF 0x000E
637 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_BLINK 0x000F
638 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TX_LEVEL_2P4 0x0010
639 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TX_LEVEL_1P0 0x0011
640 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_MASTER 0x0012
641 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_SLAVE 0x0013
642 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_INCOMPATIBLE_LINK_CFG 0x0014
643 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_AN_LINK_GOOD 0x0015
644 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_AN_COMPLETE 0x0016
645 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TS_TIMER 0x0017
646 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_LOC_RCVR_STATUS 0x0018
647 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_REM_RCVR_STATUS 0x0019
648 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_CLK25_REF 0x001A
649 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_TX_TCLK 0x001B
650 #define ADIN1100_LED_CNTRL_LED0_FUNCTION_CLK_120MHZ 0x001C
651 
652 //LED Polarity register
653 #define ADIN1100_LED_POLARITY_LED1_POLARITY 0x000C
654 #define ADIN1100_LED_POLARITY_LED1_POLARITY_AUTOSENSE 0x0000
655 #define ADIN1100_LED_POLARITY_LED1_POLARITY_ACTIVE_HIGH 0x0004
656 #define ADIN1100_LED_POLARITY_LED1_POLARITY_ACTIVE_LOW 0x0008
657 #define ADIN1100_LED_POLARITY_LED0_POLARITY 0x0003
658 #define ADIN1100_LED_POLARITY_LED0_POLARITY_AUTOSENSE 0x0000
659 #define ADIN1100_LED_POLARITY_LED0_POLARITY_ACTIVE_HIGH 0x0001
660 #define ADIN1100_LED_POLARITY_LED0_POLARITY_ACTIVE_LOW 0x0002
661 
662 //Vendor Specific 2 MMD Identifier High register
663 #define ADIN1100_MMD2_DEV_ID1_MMD2_DEV_ID1 0xFFFF
664 #define ADIN1100_MMD2_DEV_ID1_MMD2_DEV_ID1_DEFAULT 0x0283
665 
666 //Vendor Specific 2 MMD Identifier Low register
667 #define ADIN1100_MMD2_DEV_ID2_MMD2_DEV_ID2_OUI 0xFC00
668 #define ADIN1100_MMD2_DEV_ID2_MMD2_DEV_ID2_OUI_DEFAULT 0xBC00
669 #define ADIN1100_MMD2_DEV_ID2_MMD2_MODEL_NUM 0x03F0
670 #define ADIN1100_MMD2_DEV_ID2_MMD2_MODEL_NUM_DEFAULT 0x0080
671 #define ADIN1100_MMD2_DEV_ID2_MMD2_REV_NUM 0x000F
672 #define ADIN1100_MMD2_DEV_ID2_MMD2_REV_NUM_DEFAULT 0x0001
673 
674 //Vendor Specific 2 MMD Status register
675 #define ADIN1100_MMD2_STATUS_MMD2_STATUS 0xC000
676 #define ADIN1100_MMD2_STATUS_MMD2_STATUS_DEV_RESP 0x8000
677 
678 //PHY Subsystem Interrupt Status register
679 #define ADIN1100_PHY_SUBSYS_IRQ_STATUS_MAC_IF_FC_FG_IRQ_LH 0x4000
680 #define ADIN1100_PHY_SUBSYS_IRQ_STATUS_MAC_IF_EBUF_ERR_IRQ_LH 0x2000
681 #define ADIN1100_PHY_SUBSYS_IRQ_STATUS_AN_STAT_CHNG_IRQ_LH 0x0800
682 #define ADIN1100_PHY_SUBSYS_IRQ_STATUS_LINK_STAT_CHNG_LH 0x0002
683 
684 //PHY Subsystem Interrupt Mask register
685 #define ADIN1100_PHY_SUBSYS_IRQ_MASK_MAC_IF_FC_FG_IRQ_EN 0x4000
686 #define ADIN1100_PHY_SUBSYS_IRQ_MASK_MAC_IF_EBUF_ERR_IRQ_EN 0x2000
687 #define ADIN1100_PHY_SUBSYS_IRQ_MASK_AN_STAT_CHNG_IRQ_EN 0x0800
688 #define ADIN1100_PHY_SUBSYS_IRQ_MASK_LINK_STAT_CHNG_IRQ_EN 0x0002
689 
690 //Frame Checker Enable register
691 #define ADIN1100_FC_EN_FC_EN 0x0001
692 
693 //Frame Checker Interrupt Enable register
694 #define ADIN1100_FC_IRQ_EN_FC_IRQ_EN 0x0001
695 
696 //Frame Checker Transmit Select register
697 #define ADIN1100_FC_TX_SEL_FC_TX_SEL 0x0001
698 
699 //Frame Generator Enable register
700 #define ADIN1100_FG_EN_FG_EN 0x0001
701 
702 //Frame Generator Control/Restart register
703 #define ADIN1100_FG_CNTRL_RSTRT_FG_RSTRT 0x0008
704 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL 0x0007
705 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_NO_FRAMES 0x0000
706 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_RANDOM 0x0001
707 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_ALL_ZEROS 0x0002
708 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_ALL_ONES 0x0003
709 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_ALT 0x0004
710 #define ADIN1100_FG_CNTRL_RSTRT_FG_CNTRL_DEC 0x0005
711 
712 //Frame Generator Continuous Mode Enable register
713 #define ADIN1100_FG_CONT_MODE_EN_FG_CONT_MODE_EN 0x0001
714 
715 //Frame Generator Interrupt Enable register
716 #define ADIN1100_FG_IRQ_EN_FG_IRQ_EN 0x0001
717 
718 //Frame Generator Done register
719 #define ADIN1100_FG_DONE_FG_DONE 0x0001
720 
721 //RMII Configuration register
722 #define ADIN1100_RMII_CFG_RMII_TXD_CHK_EN 0x0001
723 
724 //MAC Interface Loopbacks Configuration register
725 #define ADIN1100_MAC_IF_LOOPBACK_MAC_IF_REM_LB_RX_SUP_EN 0x0008
726 #define ADIN1100_MAC_IF_LOOPBACK_MAC_IF_REM_LB_EN 0x0004
727 #define ADIN1100_MAC_IF_LOOPBACK_MAC_IF_LB_TX_SUP_EN 0x0002
728 #define ADIN1100_MAC_IF_LOOPBACK_MAC_IF_LB_EN 0x0001
729 
730 //MAC Start Of Packet (SOP) Generation Control register
731 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_LEN_CHK_EN 0x0020
732 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_SFD_EN 0x0010
733 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_TX_SOP_DET_EN 0x0008
734 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_LEN_CHK_EN 0x0004
735 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_SFD_EN 0x0002
736 #define ADIN1100_MAC_IF_SOP_CNTRL_MAC_IF_RX_SOP_DET_EN 0x0001
737 
738 //C++ guard
739 #ifdef __cplusplus
740 extern "C" {
741 #endif
742 
743 //ADIN1100 Ethernet PHY driver
744 extern const PhyDriver adin1100PhyDriver;
745 
746 //ADIN1100 related functions
747 error_t adin1100Init(NetInterface *interface);
748 void adin1100InitHook(NetInterface *interface);
749 
750 void adin1100Tick(NetInterface *interface);
751 
752 void adin1100EnableIrq(NetInterface *interface);
753 void adin1100DisableIrq(NetInterface *interface);
754 
755 void adin1100EventHandler(NetInterface *interface);
756 
757 void adin1100WritePhyReg(NetInterface *interface, uint8_t address,
758  uint16_t data);
759 
760 uint16_t adin1100ReadPhyReg(NetInterface *interface, uint8_t address);
761 
762 void adin1100DumpPhyReg(NetInterface *interface);
763 
764 void adin1100WriteMmdReg(NetInterface *interface, uint8_t devAddr,
765  uint16_t regAddr, uint16_t data);
766 
767 uint16_t adin1100ReadMmdReg(NetInterface *interface, uint8_t devAddr,
768  uint16_t regAddr);
769 
770 //C++ guard
771 #ifdef __cplusplus
772 }
773 #endif
774 
775 #endif
void adin1100DumpPhyReg(NetInterface *interface)
Dump PHY registers for debugging purpose.
void adin1100EventHandler(NetInterface *interface)
ADIN1100 event handler.
void adin1100WriteMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
const PhyDriver adin1100PhyDriver
ADIN1100 Ethernet PHY driver.
void adin1100Tick(NetInterface *interface)
ADIN1100 timer handler.
uint16_t adin1100ReadMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
error_t adin1100Init(NetInterface *interface)
ADIN1100 PHY transceiver initialization.
void adin1100DisableIrq(NetInterface *interface)
Disable interrupts.
void adin1100InitHook(NetInterface *interface)
ADIN1100 custom configuration.
void adin1100WritePhyReg(NetInterface *interface, uint8_t address, uint16_t data)
Write PHY register.
uint16_t adin1100ReadPhyReg(NetInterface *interface, uint8_t address)
Read PHY register.
void adin1100EnableIrq(NetInterface *interface)
Enable interrupts.
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