Go to the documentation of this file.
31 #ifndef _LAN8840_DRIVER_H
32 #define _LAN8840_DRIVER_H
38 #ifndef LAN8840_PHY_ADDR
39 #define LAN8840_PHY_ADDR 3
40 #elif (LAN8840_PHY_ADDR < 0 || LAN8840_PHY_ADDR > 31)
41 #error LAN8840_PHY_ADDR parameter is not valid
45 #define LAN8840_BMCR 0x00
46 #define LAN8840_BMSR 0x01
47 #define LAN8840_PHYID1 0x02
48 #define LAN8840_PHYID2 0x03
49 #define LAN8840_ANAR 0x04
50 #define LAN8840_ANLPAR 0x05
51 #define LAN8840_ANER 0x06
52 #define LAN8840_ANNPTR 0x07
53 #define LAN8840_ANNPRR 0x08
54 #define LAN8840_GBCR 0x09
55 #define LAN8840_GBSR 0x0A
56 #define LAN8840_MMDACR 0x0D
57 #define LAN8840_MMDAADR 0x0E
58 #define LAN8840_GBESR 0x0F
59 #define LAN8840_PCS_LB_SWAP_POL_CTRL 0x11
60 #define LAN8840_LINKMD 0x12
61 #define LAN8840_DPMAPCSS 0x13
62 #define LAN8840_RXERCTR 0x15
63 #define LAN8840_LED_MODE_SEL 0x16
64 #define LAN8840_LED_BEHAVIOR 0x17
65 #define LAN8840_OUT_CTRL 0x19
66 #define LAN8840_LEGACY_LED_MODE 0x1A
67 #define LAN8840_ISR 0x1B
68 #define LAN8840_AUTOMDI 0x1C
69 #define LAN8840_SPDC 0x1D
70 #define LAN8840_EXT_LOOPBACK 0x1E
71 #define LAN8840_PHYCON 0x1F
74 #define LAN8840_MEAN_SLICER_ERROR 0x01, 0x00E1
75 #define LAN8840_DCQ_MEAN_SQUARE_ERROR 0x01, 0x00E2
76 #define LAN8840_DCQ_MEAN_SQUARE_ERROR_WORST_CASE 0x01, 0x00E3
77 #define LAN8840_DCQ_SQI 0x01, 0x00E4
78 #define LAN8840_DCQ_PEAK_MSE 0x01, 0x00E5
79 #define LAN8840_DCQ_CTRL 0x01, 0x00E6
80 #define LAN8840_DCQ_CONFIG 0x01, 0x00E7
81 #define LAN8840_DCQ_SQI_TABLE 0x01, 0x00E8
82 #define LAN8840_COMMON_CTRL 0x02, 0x0000
83 #define LAN8840_STRAP_STAT 0x02, 0x0001
84 #define LAN8840_OP_MODE_STRAP_OVERRIDE 0x02, 0x0002
85 #define LAN8840_OP_MODE_STRAP 0x02, 0x0003
86 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW 0x02, 0x0004
87 #define LAN8840_RGMII_RX_DATA_PAD_SKEW 0x02, 0x0005
88 #define LAN8840_RGMII_TX_DATA_PAD_SKEW 0x02, 0x0006
89 #define LAN8840_CLK_PAD_SKEW 0x02, 0x0008
90 #define LAN8840_SELF_TEST_PKT_COUNT_LO 0x02, 0x0009
91 #define LAN8840_SELF_TEST_PKT_COUNT_HI 0x02, 0x000A
92 #define LAN8840_SELF_TEST_STAT 0x02, 0x000B
93 #define LAN8840_SELF_TEST_FRAME_COUNT_EN 0x02, 0x000C
94 #define LAN8840_SELF_TEST_PGEN_EN 0x02, 0x000D
95 #define LAN8840_SELF_TEST_EN 0x02, 0x000E
96 #define LAN8840_WOL_CTRL 0x02, 0x0010
97 #define LAN8840_WOL_MAC_LO 0x02, 0x0011
98 #define LAN8840_WOL_MAC_MI 0x02, 0x0012
99 #define LAN8840_WOL_MAC_HI 0x02, 0x0013
100 #define LAN8840_CUSTOM_PKT0_CRC_LO 0x02, 0x0014
101 #define LAN8840_CUSTOM_PKT0_CRC_HI 0x02, 0x0015
102 #define LAN8840_CUSTOM_PKT1_CRC_LO 0x02, 0x0016
103 #define LAN8840_CUSTOM_PKT1_CRC_HI 0x02, 0x0017
104 #define LAN8840_CUSTOM_PKT2_CRC_LO 0x02, 0x0018
105 #define LAN8840_CUSTOM_PKT2_CRC_HI 0x02, 0x0019
106 #define LAN8840_CUSTOM_PKT3_CRC_LO 0x02, 0x001A
107 #define LAN8840_CUSTOM_PKT3_CRC_HI 0x02, 0x001B
108 #define LAN8840_CUSTOM_PKT0_MASK_LL 0x02, 0x001C
109 #define LAN8840_CUSTOM_PKT0_MASK_LH 0x02, 0x001D
110 #define LAN8840_CUSTOM_PKT0_MASK_HL 0x02, 0x001E
111 #define LAN8840_CUSTOM_PKT0_MASK_HH 0x02, 0x001F
112 #define LAN8840_CUSTOM_PKT1_MASK_LL 0x02, 0x0020
113 #define LAN8840_CUSTOM_PKT1_MASK_LH 0x02, 0x0021
114 #define LAN8840_CUSTOM_PKT1_MASK_HL 0x02, 0x0022
115 #define LAN8840_CUSTOM_PKT1_MASK_HH 0x02, 0x0023
116 #define LAN8840_CUSTOM_PKT2_MASK_LL 0x02, 0x0024
117 #define LAN8840_CUSTOM_PKT2_MASK_LH 0x02, 0x0025
118 #define LAN8840_CUSTOM_PKT2_MASK_HL 0x02, 0x0026
119 #define LAN8840_CUSTOM_PKT2_MASK_HH 0x02, 0x0027
120 #define LAN8840_CUSTOM_PKT3_MASK_LL 0x02, 0x0028
121 #define LAN8840_CUSTOM_PKT3_MASK_LH 0x02, 0x0029
122 #define LAN8840_CUSTOM_PKT3_MASK_HL 0x02, 0x002A
123 #define LAN8840_CUSTOM_PKT3_MASK_HH 0x02, 0x002B
124 #define LAN8840_WOL_CTRL_STAT 0x02, 0x002C
125 #define LAN8840_WOL_CUSTOM_PKT_RECEIVE_STAT 0x02, 0x002D
126 #define LAN8840_WOL_MAGIC_PKT_RECEIVE_STAT 0x02, 0x002E
127 #define LAN8840_WOL_DATA_MODULE_STAT 0x02, 0x002F
128 #define LAN8840_CUSTOM_PKT0_RCVD_CRC_L 0x02, 0x0030
129 #define LAN8840_CUSTOM_PKT0_RCVD_CRC_H 0x02, 0x0031
130 #define LAN8840_CUSTOM_PKT1_RCVD_CRC_L 0x02, 0x0032
131 #define LAN8840_CUSTOM_PKT1_RCVD_CRC_H 0x02, 0x0033
132 #define LAN8840_CUSTOM_PKT2_RCVD_CRC_L 0x02, 0x0034
133 #define LAN8840_CUSTOM_PKT2_RCVD_CRC_H 0x02, 0x0035
134 #define LAN8840_CUSTOM_PKT3_RCVD_CRC_L 0x02, 0x0036
135 #define LAN8840_CUSTOM_PKT3_RCVD_CRC_H 0x02, 0x0037
136 #define LAN8840_SELF_TEST_CORRECT_COUNT_LO 0x02, 0x003C
137 #define LAN8840_SELF_TEST_CORRECT_COUNT_HI 0x02, 0x003D
138 #define LAN8840_SELF_TEST_ERROR_COUNT_LO 0x02, 0x003E
139 #define LAN8840_SELF_TEST_ERROR_COUNT_HI 0x02, 0x003F
140 #define LAN8840_RX_DLL_CTRL 0x02, 0x004C
141 #define LAN8840_TX_DLL_CTRL 0x02, 0x004D
142 #define LAN8840_1000M_FAST_LINK_DOWN_EN 0x02, 0x005A
143 #define LAN8840_DRIVING_STRENGTH 0x02, 0x006F
144 #define LAN8840_GPIO_EN 0x02, 0x0080
145 #define LAN8840_GPIO_DIR 0x02, 0x0081
146 #define LAN8840_GPIO_BUF 0x02, 0x0082
147 #define LAN8840_GPIO_DATA_SEL1 0x02, 0x0083
148 #define LAN8840_GPIO_DATA_SEL2 0x02, 0x0084
149 #define LAN8840_GPIO_DATA 0x02, 0x0085
150 #define LAN8840_GPIO_INT_STS 0x02, 0x0086
151 #define LAN8840_GPIO_INT_EN 0x02, 0x0087
152 #define LAN8840_GPIO_INT_POL 0x02, 0x0088
153 #define LAN8840_PTP_CMD_CTL 0x02, 0x0100
154 #define LAN8840_PTP_GENERAL_CONFIG 0x02, 0x0101
155 #define LAN8840_PTP_REF_CLK_CFG 0x02, 0x0102
156 #define LAN8840_PTP_INT_STS 0x02, 0x0103
157 #define LAN8840_PTP_INT_EN 0x02, 0x0104
158 #define LAN8840_PTP_MOD_ERR 0x02, 0x0105
159 #define LAN8840_PTP_LTC_SET_SEC_HI 0x02, 0x0106
160 #define LAN8840_PTP_LTC_SET_SEC_MID 0x02, 0x0107
161 #define LAN8840_PTP_LTC_SET_SEC_LO 0x02, 0x0108
162 #define LAN8840_PTP_LTC_SET_NS_HI 0x02, 0x0109
163 #define LAN8840_PTP_LTC_SET_NS_LO 0x02, 0x010A
164 #define LAN8840_PTP_LTC_SET_SUBNS_HI 0x02, 0x010B
165 #define LAN8840_PTP_LTC_SET_SUBNS_LO 0x02, 0x010C
166 #define LAN8840_PTP_LTC_RATE_ADJ_HI 0x02, 0x010D
167 #define LAN8840_PTP_LTC_RATE_ADJ_LO 0x02, 0x010E
168 #define LAN8840_PTP_LTC_TEMP_RATE_ADJ_HI 0x02, 0x010F
169 #define LAN8840_PTP_LTC_TEMP_RATE_ADJ_LO 0x02, 0x0110
170 #define LAN8840_PTP_LTC_TEMP_RATE_DURATION_HI 0x02, 0x0111
171 #define LAN8840_PTP_LTC_TEMP_RATE_DURATION_LO 0x02, 0x0112
172 #define LAN8840_PTP_LTC_STEP_ADJ_HI 0x02, 0x0113
173 #define LAN8840_PTP_LTC_STEP_ADJ_LO 0x02, 0x0114
174 #define LAN8840_PTP_LTC_EXT_ADJ_CFG 0x02, 0x0115
175 #define LAN8840_PTP_LTC_TARGET_SEC_HI_A 0x02, 0x0116
176 #define LAN8840_PTP_LTC_TARGET_SEC_LO_A 0x02, 0x0117
177 #define LAN8840_PTP_LTC_TARGET_NS_HI_A 0x02, 0x0118
178 #define LAN8840_PTP_LTC_TARGET_NS_LO_A 0x02, 0x0119
179 #define LAN8840_PTP_LTC_TARGET_RELOAD_SEC_HI_A 0x02, 0x011A
180 #define LAN8840_PTP_LTC_TARGET_RELOAD_SEC_LO_A 0x02, 0x011B
181 #define LAN8840_PTP_LTC_TARGET_RELOAD_NS_HI_A 0x02, 0x011C
182 #define LAN8840_PTP_LTC_TARGET_RELOAD_NS_LO_A 0x02, 0x011D
183 #define LAN8840_PTP_LTC_TARGET_ACT_NS_HI_A 0x02, 0x011E
184 #define LAN8840_PTP_LTC_TARGET_ACT_NS_LO_A 0x02, 0x011F
185 #define LAN8840_PTP_LTC_TARGET_SEC_HI_B 0x02, 0x0120
186 #define LAN8840_PTP_LTC_TARGET_SEC_LO_B 0x02, 0x0121
187 #define LAN8840_PTP_LTC_TARGET_NS_HI_B 0x02, 0x0122
188 #define LAN8840_PTP_LTC_TARGET_NS_LO_B 0x02, 0x0123
189 #define LAN8840_PTP_LTC_TARGET_RELOAD_SEC_HI_B 0x02, 0x0124
190 #define LAN8840_PTP_LTC_TARGET_RELOAD_SEC_LO_B 0x02, 0x0125
191 #define LAN8840_PTP_LTC_TARGET_RELOAD_NS_HI_B 0x02, 0x0126
192 #define LAN8840_PTP_LTC_TARGET_RELOAD_NS_LO_B 0x02, 0x0127
193 #define LAN8840_PTP_LTC_TARGET_ACT_NS_HI_B 0x02, 0x0128
194 #define LAN8840_PTP_LTC_TARGET_ACT_NS_LO_B 0x02, 0x0129
195 #define LAN8840_PTP_RX_USER_MAC_HI 0x02, 0x012A
196 #define LAN8840_PTP_RX_USER_MAC_MID 0x02, 0x012B
197 #define LAN8840_PTP_RX_USER_MAC_LO 0x02, 0x012C
198 #define LAN8840_PTP_RX_USER_IP_ADDR0 0x02, 0x012D
199 #define LAN8840_PTP_RX_USER_IP_ADDR1 0x02, 0x012E
200 #define LAN8840_PTP_RX_USER_IP_ADDR2 0x02, 0x012F
201 #define LAN8840_PTP_RX_USER_IP_ADDR3 0x02, 0x0130
202 #define LAN8840_PTP_RX_USER_IP_ADDR4 0x02, 0x0131
203 #define LAN8840_PTP_RX_USER_IP_ADDR5 0x02, 0x0132
204 #define LAN8840_PTP_RX_USER_IP_ADDR6 0x02, 0x0133
205 #define LAN8840_PTP_RX_USER_IP_ADDR7 0x02, 0x0134
206 #define LAN8840_PTP_RX_USER_IP_MASK0 0x02, 0x0135
207 #define LAN8840_PTP_RX_USER_IP_MASK1 0x02, 0x0136
208 #define LAN8840_PTP_RX_USER_IP_MASK2 0x02, 0x0137
209 #define LAN8840_PTP_RX_USER_IP_MASK3 0x02, 0x0138
210 #define LAN8840_PTP_RX_USER_IP_MASK4 0x02, 0x0139
211 #define LAN8840_PTP_RX_USER_IP_MASK5 0x02, 0x013A
212 #define LAN8840_PTP_RX_USER_IP_MASK6 0x02, 0x013B
213 #define LAN8840_PTP_RX_USER_IP_MASK7 0x02, 0x013C
214 #define LAN8840_VLAN_TYPE_ID 0x02, 0x013D
215 #define LAN8840_VLAN1_TYPE_ID 0x02, 0x013E
216 #define LAN8840_VLAN1_ID_MASK 0x02, 0x013F
217 #define LAN8840_VLAN1_VID_RANGE_UP 0x02, 0x0140
218 #define LAN8840_VLAN1_VID_RANGE_LO 0x02, 0x0141
219 #define LAN8840_VLAN2_TYPE_ID 0x02, 0x0142
220 #define LAN8840_VLAN2_ID_MASK 0x02, 0x0143
221 #define LAN8840_VLAN2_VID_RANGE_UP 0x02, 0x0144
222 #define LAN8840_VLAN2_VID_RANGE_LO 0x02, 0x0145
223 #define LAN8840_LLC_TYPE_ID 0x02, 0x0146
224 #define LAN8840_PTP_GPIO_SEL 0x02, 0x0147
225 #define LAN8840_PTP_RX_LATENCY_10 0x02, 0x0148
226 #define LAN8840_PTP_TX_LATENCY_10 0x02, 0x0149
227 #define LAN8840_PTP_RX_LATENCY_100 0x02, 0x014A
228 #define LAN8840_PTP_TX_LATENCY_100 0x02, 0x014B
229 #define LAN8840_PTP_RX_LATENCY_1000 0x02, 0x014C
230 #define LAN8840_PTP_TX_LATENCY_1000 0x02, 0x014D
231 #define LAN8840_PTP_ASYM_DLY_HI 0x02, 0x014E
232 #define LAN8840_PTP_ASYM_DLY_LO 0x02, 0x014F
233 #define LAN8840_PTP_PEERDLY_HI 0x02, 0x0150
234 #define LAN8840_PTP_PEERDLY_LO 0x02, 0x0151
235 #define LAN8840_PTP_CAP_INFO 0x02, 0x0152
236 #define LAN8840_PTP_TX_USER_MAC_HI 0x02, 0x0153
237 #define LAN8840_PTP_TX_USER_MAC_MID 0x02, 0x0154
238 #define LAN8840_PTP_TX_USER_MAC_LO 0x02, 0x0155
239 #define LAN8840_PTP_TX_USER_IP_ADDR0 0x02, 0x0156
240 #define LAN8840_PTP_TX_USER_IP_ADDR1 0x02, 0x0157
241 #define LAN8840_PTP_TX_USER_IP_ADDR2 0x02, 0x0158
242 #define LAN8840_PTP_TX_USER_IP_ADDR3 0x02, 0x0159
243 #define LAN8840_PTP_TX_USER_IP_ADDR4 0x02, 0x015A
244 #define LAN8840_PTP_TX_USER_IP_ADDR5 0x02, 0x015B
245 #define LAN8840_PTP_TX_USER_IP_ADDR6 0x02, 0x015C
246 #define LAN8840_PTP_TX_USER_IP_ADDR7 0x02, 0x015D
247 #define LAN8840_PTP_TX_USER_IP_MASK0 0x02, 0x015E
248 #define LAN8840_PTP_TX_USER_IP_MASK1 0x02, 0x015F
249 #define LAN8840_PTP_TX_USER_IP_MASK2 0x02, 0x0160
250 #define LAN8840_PTP_TX_USER_IP_MASK3 0x02, 0x0161
251 #define LAN8840_PTP_TX_USER_IP_MASK4 0x02, 0x0162
252 #define LAN8840_PTP_TX_USER_IP_MASK5 0x02, 0x0163
253 #define LAN8840_PTP_TX_USER_IP_MASK6 0x02, 0x0164
254 #define LAN8840_PTP_TX_USER_IP_MASK7 0x02, 0x0165
255 #define LAN8840_PTP_LTC_RD_SEC_HI 0x02, 0x0166
256 #define LAN8840_PTP_LTC_RD_SEC_MID 0x02, 0x0167
257 #define LAN8840_PTP_LTC_RD_SEC_LO 0x02, 0x0168
258 #define LAN8840_PTP_LTC_RD_NS_HI 0x02, 0x0169
259 #define LAN8840_PTP_LTC_RD_NS_LO 0x02, 0x016A
260 #define LAN8840_PTP_LTC_RD_SUBNS_HI 0x02, 0x016B
261 #define LAN8840_PTP_LTC_RD_SUBNS_LO 0x02, 0x016C
262 #define LAN8840_PTP_REV 0x02, 0x016D
263 #define LAN8840_PTP_SPARE 0x02, 0x016E
264 #define LAN8840_PTP_RX_PARSE_CONFIG 0x02, 0x0170
265 #define LAN8840_PTP_RX_PARSE_VLAN_CONFIG 0x02, 0x0171
266 #define LAN8840_PTP_RX_PARSE_L2_ADDR_EN 0x02, 0x0172
267 #define LAN8840_PTP_RX_PARSE_IP_ADDR_EN 0x02, 0x0173
268 #define LAN8840_PTP_RX_PARSE_UDP_SRC_PORT 0x02, 0x0174
269 #define LAN8840_PTP_RX_PARSE_UDP_DEST_PORT 0x02, 0x0175
270 #define LAN8840_PTP_RX_VERSION 0x02, 0x0176
271 #define LAN8840_PTP_RX_DOMAIN_DOMAIN_LO 0x02, 0x0177
272 #define LAN8840_PTP_RX_DOMAIN_MASK_DOMAIN_UP 0x02, 0x0178
273 #define LAN8840_PTP_RX_SDOID_SDOID_LO 0x02, 0x0179
274 #define LAN8840_PTP_RX_SDOID_MASK_SDOID_UP 0x02, 0x017A
275 #define LAN8840_PTP_RX_TIMESTAMP_EN 0x02, 0x017B
276 #define LAN8840_PTP_RX_TIMESTAMP_CONFIG 0x02, 0x017C
277 #define LAN8840_PTP_RX_MOD 0x02, 0x017D
278 #define LAN8840_PTP_RX_RSVD_BYTE_CFG 0x02, 0x017E
279 #define LAN8840_PTP_RX_TAIL_TAG 0x02, 0x017F
280 #define LAN8840_PTP_RX_CF_MOD_EN 0x02, 0x0180
281 #define LAN8840_PTP_RX_CF_CFG 0x02, 0x0181
282 #define LAN8840_PTP_RX_INGRESS_NS_HI 0x02, 0x0182
283 #define LAN8840_PTP_RX_INGRESS_NS_LO 0x02, 0x0183
284 #define LAN8840_PTP_RX_INGRESS_SEC_HI 0x02, 0x0184
285 #define LAN8840_PTP_RX_INGRESS_SEC_LO 0x02, 0x0185
286 #define LAN8840_PTP_RX_MSG_HEADER1 0x02, 0x0186
287 #define LAN8840_PTP_RX_MSG_HEADER2 0x02, 0x0187
288 #define LAN8840_PTP_RX_PDREQ_SEC_HI 0x02, 0x0188
289 #define LAN8840_PTP_RX_PDREQ_SEC_MID 0x02, 0x0189
290 #define LAN8840_PTP_RX_PDREQ_SEC_LOW 0x02, 0x018A
291 #define LAN8840_PTP_RX_PDREQ_NS_HI 0x02, 0x018B
292 #define LAN8840_PTP_RX_PDREQ_NS_LO 0x02, 0x018C
293 #define LAN8840_PTP_RX_RAW_TS_SEC 0x02, 0x018D
294 #define LAN8840_PTP_RX_RAW_TS_NS_HI 0x02, 0x018E
295 #define LAN8840_PTP_RX_RAW_TS_NS_LO 0x02, 0x018F
296 #define LAN8840_PTP_RX_CHKSUM_DROPPED_CNT_HI 0x02, 0x0190
297 #define LAN8840_PTP_RX_CHKSUM_DROPPED_CNT_LO 0x02, 0x0191
298 #define LAN8840_PTP_RX_FRMS_MOD_CNT_HI 0x02, 0x0192
299 #define LAN8840_PTP_RX_FRMS_MOD_CNT_LO 0x02, 0x0193
300 #define LAN8840_PTP_TX_PARSE_CONFIG 0x02, 0x01B0
301 #define LAN8840_PTP_TX_PARSE_VLAN_CONFIG 0x02, 0x01B1
302 #define LAN8840_PTP_TX_PARSE_L2_ADDR_EN 0x02, 0x01B2
303 #define LAN8840_PTP_TX_PARSE_IP_ADDR_EN 0x02, 0x01B3
304 #define LAN8840_PTP_TX_PARSE_UDP_SRC_PORT 0x02, 0x01B4
305 #define LAN8840_PTP_TX_PARSE_UDP_DEST_PORT 0x02, 0x01B5
306 #define LAN8840_PTP_TX_VERSION 0x02, 0x01B6
307 #define LAN8840_PTP_TX_DOMAIN_DOMAIN_LO 0x02, 0x01B7
308 #define LAN8840_PTP_TX_DOMAIN_MASK_DOMAIN_UP 0x02, 0x01B8
309 #define LAN8840_PTP_TX_SDOID_SDOID_LO 0x02, 0x01B9
310 #define LAN8840_PTP_TX_SDOID_MASK_SDOID_UP 0x02, 0x01BA
311 #define LAN8840_PTP_TX_TIMESTAMP_EN 0x02, 0x01BB
312 #define LAN8840_PTP_TX_TIMESTAMP_CONFIG 0x02, 0x01BC
313 #define LAN8840_PTP_TX_MOD 0x02, 0x01BD
314 #define LAN8840_PTP_TX_RSVD_BYTE_CFG 0x02, 0x01BE
315 #define LAN8840_PTP_TX_TAIL_TAG 0x02, 0x01BF
316 #define LAN8840_PTP_TX_CF_MOD_EN 0x02, 0x01C0
317 #define LAN8840_PTP_TX_CF_CFG 0x02, 0x01C1
318 #define LAN8840_PTP_TX_EGRESS_NS_HI 0x02, 0x01C2
319 #define LAN8840_PTP_TX_EGRESS_NS_LO 0x02, 0x01C3
320 #define LAN8840_PTP_TX_EGRESS_SEC_HI 0x02, 0x01C4
321 #define LAN8840_PTP_TX_EGRESS_SEC_LO 0x02, 0x01C5
322 #define LAN8840_PTP_TX_MSG_HEADER1 0x02, 0x01C6
323 #define LAN8840_PTP_TX_MSG_HEADER2 0x02, 0x01C7
324 #define LAN8840_PTP_TX_SYNC_SEC_HI 0x02, 0x01C8
325 #define LAN8840_PTP_TX_SYNC_SEC_MID 0x02, 0x01C9
326 #define LAN8840_PTP_TX_SYNC_SEC_LOW 0x02, 0x01CA
327 #define LAN8840_PTP_TX_SYNC_NS_HI 0x02, 0x01CB
328 #define LAN8840_PTP_TX_SYNC_NS_LO 0x02, 0x01CC
329 #define LAN8840_PTP_TX_PDRESP_SEC_HI 0x02, 0x01CD
330 #define LAN8840_PTP_TX_PDRESP_SEC_MID 0x02, 0x01CE
331 #define LAN8840_PTP_TX_PDRESP_SEC_LOW 0x02, 0x01CF
332 #define LAN8840_PTP_TX_PDRESP_NS_HI 0x02, 0x01D0
333 #define LAN8840_PTP_TX_PDRESP_NS_LO 0x02, 0x01D1
334 #define LAN8840_PTP_TX_RAW_TS_SEC 0x02, 0x01D2
335 #define LAN8840_PTP_TX_RAW_TS_NS_HI 0x02, 0x01D3
336 #define LAN8840_PTP_TX_RAW_TS_NS_LO 0x02, 0x01D4
337 #define LAN8840_PTP_TX_CHKSUM_DROPPED_CNT_HI 0x02, 0x01D5
338 #define LAN8840_PTP_TX_CHKSUM_DROPPED_CNT_LO 0x02, 0x01D6
339 #define LAN8840_PTP_TX_FRMS_MOD_CNT_HI 0x02, 0x01D7
340 #define LAN8840_PTP_TX_FRMS_MOD_CNT_LO 0x02, 0x01D8
341 #define LAN8840_PTP_GPIO_CAP_EN 0x02, 0x01F0
342 #define LAN8840_PTP_GPIO_CAP_LOCK 0x02, 0x01F1
343 #define LAN8840_PTP_GPIO_RE_LTC_SEC_HI_CAP_X 0x02, 0x01F2
344 #define LAN8840_PTP_GPIO_RE_LTC_SEC_LO_CAP_X 0x02, 0x01F3
345 #define LAN8840_PTP_GPIO_RE_LTC_NS_HI_CAP_X 0x02, 0x01F4
346 #define LAN8840_PTP_GPIO_RE_LTC_NS_LO_CAP_X 0x02, 0x01F5
347 #define LAN8840_PTP_GPIO_FE_LTC_SEC_HI_CAP_X 0x02, 0x01F6
348 #define LAN8840_PTP_GPIO_FE_LTC_SEC_LO_CAP_X 0x02, 0x01F7
349 #define LAN8840_PTP_GPIO_FE_LTC_NS_HI_CAP_X 0x02, 0x01F8
350 #define LAN8840_PTP_GPIO_FE_LTC_NS_LO_CAP_X 0x02, 0x01F9
351 #define LAN8840_PTP_GPIO_CAP_STS 0x02, 0x01FA
352 #define LAN8840_PTP_GPIO_INT_CLR_CFG 0x02, 0x01FB
353 #define LAN8840_PTP_DEBUG_SEL 0x02, 0x01FE
354 #define LAN8840_PCS_CTRL1 0x03, 0x0000
355 #define LAN8840_PCS_STAT1 0x03, 0x0001
356 #define LAN8840_EEE_QUIET_TIMER 0x03, 0x0008
357 #define LAN8840_EEE_UPDATE_TIMER 0x03, 0x0009
358 #define LAN8840_EEE_LINK_FAIL_TIMER 0x03, 0x000A
359 #define LAN8840_EEE_POST_UPDATE_TIMER 0x03, 0x000B
360 #define LAN8840_EEE_WAIT_WQ_TIMER 0x03, 0x000C
361 #define LAN8840_EEE_WAKE_TIMER 0x03, 0x000D
362 #define LAN8840_EEE_WAKE_TX_TIMER 0x03, 0x000E
363 #define LAN8840_EEE_WAKE_MZ_TIMER 0x03, 0x000F
364 #define LAN8840_EEE_CTRL_CAPABILITY 0x03, 0x0014
365 #define LAN8840_EEE_WAKE_ERROR_COUNTER 0x03, 0x0016
366 #define LAN8840_EEE_100_TIMER0 0x03, 0x0018
367 #define LAN8840_EEE_100_TIMER1 0x03, 0x0019
368 #define LAN8840_EEE_100_TIMER2 0x03, 0x001A
369 #define LAN8840_EEE_100_TIMER3 0x03, 0x001B
370 #define LAN8840_EEE_ADV 0x07, 0x003C
371 #define LAN8840_EEE_LP_ABILITY 0x07, 0x003D
372 #define LAN8840_EEE_LP_ABILITY_OVERRIDE 0x07, 0x003E
373 #define LAN8840_EEE_MSG_CODE 0x07, 0x003F
374 #define LAN8840_XTAL_CTRL 0x1C, 0x0001
375 #define LAN8840_AFED_CTRL 0x1C, 0x0009
376 #define LAN8840_LDO_CTRL 0x1C, 0x000E
377 #define LAN8840_EDPD_CTRL 0x1C, 0x0024
378 #define LAN8840_EMITX_CTRL 0x1C, 0x0025
379 #define LAN8840_EMITX_COEFF 0x1C, 0x0026
382 #define LAN8840_BMCR_RESET 0x8000
383 #define LAN8840_BMCR_LOOPBACK 0x4000
384 #define LAN8840_BMCR_SPEED_SEL_LSB 0x2000
385 #define LAN8840_BMCR_AN_EN 0x1000
386 #define LAN8840_BMCR_POWER_DOWN 0x0800
387 #define LAN8840_BMCR_ISOLATE 0x0400
388 #define LAN8840_BMCR_RESTART_AN 0x0200
389 #define LAN8840_BMCR_DUPLEX_MODE 0x0100
390 #define LAN8840_BMCR_COL_TEST 0x0080
391 #define LAN8840_BMCR_SPEED_SEL_MSB 0x0040
394 #define LAN8840_BMSR_100BT4 0x8000
395 #define LAN8840_BMSR_100BTX_FD 0x4000
396 #define LAN8840_BMSR_100BTX_HD 0x2000
397 #define LAN8840_BMSR_10BT_FD 0x1000
398 #define LAN8840_BMSR_10BT_HD 0x0800
399 #define LAN8840_BMSR_100BT2_FD 0x0400
400 #define LAN8840_BMSR_100BT2_HD 0x0200
401 #define LAN8840_BMSR_EXTENDED_STATUS 0x0100
402 #define LAN8840_BMSR_UNIDIRECTIONAL_ABLE 0x0080
403 #define LAN8840_BMSR_MF_PREAMBLE_SUPPR 0x0040
404 #define LAN8840_BMSR_AN_COMPLETE 0x0020
405 #define LAN8840_BMSR_REMOTE_FAULT 0x0010
406 #define LAN8840_BMSR_AN_CAPABLE 0x0008
407 #define LAN8840_BMSR_LINK_STATUS 0x0004
408 #define LAN8840_BMSR_JABBER_DETECT 0x0002
409 #define LAN8840_BMSR_EXTENDED_CAPABLE 0x0001
412 #define LAN8840_PHYID1_PHY_ID_MSB 0xFFFF
413 #define LAN8840_PHYID1_PHY_ID_MSB_DEFAULT 0x0022
416 #define LAN8840_PHYID2_PHY_ID_LSB 0xFC00
417 #define LAN8840_PHYID2_PHY_ID_LSB_DEFAULT 0x1400
418 #define LAN8840_PHYID2_MODEL_NUM 0x03F0
419 #define LAN8840_PHYID2_MODEL_NUM_DEFAULT 0x0250
420 #define LAN8840_PHYID2_REVISION_NUM 0x000F
423 #define LAN8840_ANAR_NEXT_PAGE 0x8000
424 #define LAN8840_ANAR_REMOTE_FAULT 0x2000
425 #define LAN8840_ANAR_EXTENDED_NEXT_PAGE 0x1000
426 #define LAN8840_ANAR_ASYM_PAUSE 0x0800
427 #define LAN8840_ANAR_SYM_PAUSE 0x0400
428 #define LAN8840_ANAR_100BT4 0x0200
429 #define LAN8840_ANAR_100BTX_FD 0x0100
430 #define LAN8840_ANAR_100BTX_HD 0x0080
431 #define LAN8840_ANAR_10BT_FD 0x0040
432 #define LAN8840_ANAR_10BT_HD 0x0020
433 #define LAN8840_ANAR_SELECTOR 0x001F
434 #define LAN8840_ANAR_SELECTOR_DEFAULT 0x0001
437 #define LAN8840_ANLPAR_NEXT_PAGE 0x8000
438 #define LAN8840_ANLPAR_ACK 0x4000
439 #define LAN8840_ANLPAR_REMOTE_FAULT 0x2000
440 #define LAN8840_ANLPAR_EXTENDED_NEXT_PAGE 0x1000
441 #define LAN8840_ANLPAR_ASYM_PAUSE 0x0800
442 #define LAN8840_ANLPAR_PAUSE 0x0400
443 #define LAN8840_ANLPAR_100BT4 0x0200
444 #define LAN8840_ANLPAR_100BTX_FD 0x0100
445 #define LAN8840_ANLPAR_100BTX_HD 0x0080
446 #define LAN8840_ANLPAR_10BT_FD 0x0040
447 #define LAN8840_ANLPAR_10BT_HD 0x0020
448 #define LAN8840_ANLPAR_SELECTOR 0x001F
449 #define LAN8840_ANLPAR_SELECTOR_DEFAULT 0x0001
452 #define LAN8840_ANER_RECEIVE_NP_LOC_ABLE 0x0040
453 #define LAN8840_ANER_RECEIVE_NP_STOR_LOC 0x0020
454 #define LAN8840_ANER_PAR_DETECT_FAULT 0x0010
455 #define LAN8840_ANER_LP_NEXT_PAGE_ABLE 0x0008
456 #define LAN8840_ANER_NEXT_PAGE_ABLE 0x0004
457 #define LAN8840_ANER_PAGE_RECEIVED 0x0002
458 #define LAN8840_ANER_LP_AN_ABLE 0x0001
461 #define LAN8840_ANNPTR_NEXT_PAGE 0x8000
462 #define LAN8840_ANNPTR_MSG_PAGE 0x2000
463 #define LAN8840_ANNPTR_ACK2 0x1000
464 #define LAN8840_ANNPTR_TOGGLE 0x0800
465 #define LAN8840_ANNPTR_MESSAGE 0x07FF
468 #define LAN8840_ANNPRR_NEXT_PAGE 0x8000
469 #define LAN8840_ANNPRR_ACK 0x4000
470 #define LAN8840_ANNPRR_MSG_PAGE 0x2000
471 #define LAN8840_ANNPRR_ACK2 0x1000
472 #define LAN8840_ANNPRR_TOGGLE 0x0800
473 #define LAN8840_ANNPRR_MESSAGE 0x07FF
476 #define LAN8840_GBCR_TEST_MODE 0xE000
477 #define LAN8840_GBCR_MS_MAN_CONF_EN 0x1000
478 #define LAN8840_GBCR_MS_MAN_CONF_VAL 0x0800
479 #define LAN8840_GBCR_PORT_TYPE 0x0400
480 #define LAN8840_GBCR_1000BT_FD 0x0200
481 #define LAN8840_GBCR_1000BT_HD 0x0100
484 #define LAN8840_GBSR_MS_CONF_FAULT 0x8000
485 #define LAN8840_GBSR_MS_CONF_RES 0x4000
486 #define LAN8840_GBSR_LOCAL_RECEIVER_STATUS 0x2000
487 #define LAN8840_GBSR_REMOTE_RECEIVER_STATUS 0x1000
488 #define LAN8840_GBSR_LP_1000BT_FD 0x0800
489 #define LAN8840_GBSR_LP_1000BT_HD 0x0400
490 #define LAN8840_GBSR_IDLE_ERR_COUNT 0x00FF
493 #define LAN8840_MMDACR_FUNC 0xC000
494 #define LAN8840_MMDACR_FUNC_ADDR 0x0000
495 #define LAN8840_MMDACR_FUNC_DATA_NO_POST_INC 0x4000
496 #define LAN8840_MMDACR_FUNC_DATA_POST_INC_RW 0x8000
497 #define LAN8840_MMDACR_FUNC_DATA_POST_INC_W 0xC000
498 #define LAN8840_MMDACR_DEVAD 0x001F
501 #define LAN8840_GBESR_1000BX_FD 0x8000
502 #define LAN8840_GBESR_1000BX_HD 0x4000
503 #define LAN8840_GBESR_1000BT_FD 0x2000
504 #define LAN8840_GBESR_1000BT_HD 0x1000
507 #define LAN8840_PCS_LB_SWAP_POL_CTRL_REMOTE_LOOPBACK 0x0100
508 #define LAN8840_PCS_LB_SWAP_POL_CTRL_MR_LED_SEL 0x00C0
509 #define LAN8840_PCS_LB_SWAP_POL_CTRL_10BT_PREAMBLE_EN 0x0004
512 #define LAN8840_LINKMD_TEST_EN 0x8000
513 #define LAN8840_LINKMD_TX_DIS 0x4000
514 #define LAN8840_LINKMD_PAIR 0x3000
515 #define LAN8840_LINKMD_PAIR_A 0x0000
516 #define LAN8840_LINKMD_PAIR_B 0x1000
517 #define LAN8840_LINKMD_PAIR_C 0x2000
518 #define LAN8840_LINKMD_PAIR_D 0x3000
519 #define LAN8840_LINKMD_SEL 0x0C00
520 #define LAN8840_LINKMD_STATUS 0x0300
521 #define LAN8840_LINKMD_STATUS_NORMAL 0x0000
522 #define LAN8840_LINKMD_STATUS_OPEN 0x0100
523 #define LAN8840_LINKMD_STATUS_SHORT 0x0200
524 #define LAN8840_LINKMD_STATUS_TEST_FAILED 0x0300
525 #define LAN8840_LINKMD_FAULT_DATA 0x00FF
528 #define LAN8840_DPMAPCSS_1000BT_LINK_STATUS 0x0002
529 #define LAN8840_DPMAPCSS_100BTX_LINK_STATUS 0x0001
532 #define LAN8840_LED_MODE_SEL_LED4_CONFIG 0xF000
533 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_ACT 0x0000
534 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_1000_ACT 0x1000
535 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_100_ACT 0x2000
536 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_10_ACT 0x3000
537 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_100_1000_ACT 0x4000
538 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_10_1000_ACT 0x5000
539 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_LINK_10_100_ACT 0x6000
540 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_DUPLEX_COL 0x8000
541 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_COL 0x9000
542 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_ACT 0xA000
543 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_AN_FAULT 0xC000
544 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_OFF 0xE000
545 #define LAN8840_LED_MODE_SEL_LED4_CONFIG_ON 0xF000
546 #define LAN8840_LED_MODE_SEL_LED3_CONFIG 0x0F00
547 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_ACT 0x0000
548 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_1000_ACT 0x0100
549 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_100_ACT 0x0200
550 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_10_ACT 0x0300
551 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_100_1000_ACT 0x0400
552 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_10_1000_ACT 0x0500
553 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_LINK_10_100_ACT 0x0600
554 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_DUPLEX_COL 0x0800
555 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_COL 0x0900
556 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_ACT 0x0A00
557 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_AN_FAULT 0x0C00
558 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_OFF 0x0E00
559 #define LAN8840_LED_MODE_SEL_LED3_CONFIG_ON 0x0F00
560 #define LAN8840_LED_MODE_SEL_LED2_CONFIG 0x00F0
561 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_ACT 0x0000
562 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_1000_ACT 0x0010
563 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_100_ACT 0x0020
564 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_10_ACT 0x0030
565 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_100_1000_ACT 0x0040
566 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_10_1000_ACT 0x0050
567 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_LINK_10_100_ACT 0x0060
568 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_DUPLEX_COL 0x0080
569 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_COL 0x0090
570 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_ACT 0x00A0
571 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_AN_FAULT 0x00C0
572 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_OFF 0x00E0
573 #define LAN8840_LED_MODE_SEL_LED2_CONFIG_ON 0x00F0
574 #define LAN8840_LED_MODE_SEL_LED1_CONFIG 0x000F
575 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_ACT 0x0000
576 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_1000_ACT 0x0001
577 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_100_ACT 0x0002
578 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_10_ACT 0x0003
579 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_100_1000_ACT 0x0004
580 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_10_1000_ACT 0x0005
581 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_LINK_10_100_ACT 0x0006
582 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_DUPLEX_COL 0x0008
583 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_COL 0x0009
584 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_ACT 0x000A
585 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_AN_FAULT 0x000C
586 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_OFF 0x000E
587 #define LAN8840_LED_MODE_SEL_LED1_CONFIG_ON 0x000F
590 #define LAN8840_LED_BEHAVIOR_LED_ACT_OUT_SEL 0x4000
591 #define LAN8840_LED_BEHAVIOR_LED_PULSING_EN 0x1000
592 #define LAN8840_LED_BEHAVIOR_LED_BLINK_RATE 0x0C00
593 #define LAN8840_LED_BEHAVIOR_LED_BLINK_RATE_2_5HZ 0x0000
594 #define LAN8840_LED_BEHAVIOR_LED_BLINK_RATE_5HZ 0x0400
595 #define LAN8840_LED_BEHAVIOR_LED_BLINK_RATE_10HZ 0x0800
596 #define LAN8840_LED_BEHAVIOR_LED_BLINK_RATE_20HZ 0x0C00
597 #define LAN8840_LED_BEHAVIOR_LED_PULSE_STRECH_EN 0x01E0
598 #define LAN8840_LED_BEHAVIOR_LED_PULSE_STRECH_EN_LED4 0x0100
599 #define LAN8840_LED_BEHAVIOR_LED_PULSE_STRECH_EN_LED3 0x0080
600 #define LAN8840_LED_BEHAVIOR_LED_PULSE_STRECH_EN_LED2 0x0040
601 #define LAN8840_LED_BEHAVIOR_LED_PULSE_STRECH_EN_LED1 0x0020
602 #define LAN8840_LED_BEHAVIOR_LED_COMBINATION_DIS 0x000F
603 #define LAN8840_LED_BEHAVIOR_LED_COMBINATION_DIS_LED4 0x0008
604 #define LAN8840_LED_BEHAVIOR_LED_COMBINATION_DIS_LED3 0x0004
605 #define LAN8840_LED_BEHAVIOR_LED_COMBINATION_DIS_LED2 0x0002
606 #define LAN8840_LED_BEHAVIOR_LED_COMBINATION_DIS_LED1 0x0001
609 #define LAN8840_OUT_CTRL_MDIO_BUFFER_TYPE 0x8000
610 #define LAN8840_OUT_CTRL_INT_BUFFER_TYPE 0x4000
611 #define LAN8840_OUT_CTRL_LED_BUFFER_TYPE 0x3F00
612 #define LAN8840_OUT_CTRL_LED_BUFFER_TYPE_LED4 0x0800
613 #define LAN8840_OUT_CTRL_LED_BUFFER_TYPE_LED3 0x0400
614 #define LAN8840_OUT_CTRL_LED_BUFFER_TYPE_LED2 0x0200
615 #define LAN8840_OUT_CTRL_LED_BUFFER_TYPE_LED1 0x0100
616 #define LAN8840_OUT_CTRL_PME_POLARITY 0x0080
617 #define LAN8840_OUT_CTRL_LED_POLARITY 0x003F
618 #define LAN8840_OUT_CTRL_LED_POLARITY_LED4 0x0008
619 #define LAN8840_OUT_CTRL_LED_POLARITY_LED3 0x0004
620 #define LAN8840_OUT_CTRL_LED_POLARITY_LED2 0x0002
621 #define LAN8840_OUT_CTRL_LED_POLARITY_LED1 0x0001
624 #define LAN8840_LEGACY_LED_MODE_KSZ9031_LED_MODE 0x4000
627 #define LAN8840_ISR_ENERGY_NOT_DETECT 0x0800
628 #define LAN8840_ISR_ENERGY_DETECT 0x0400
629 #define LAN8840_ISR_1588 0x0200
630 #define LAN8840_ISR_GPIO 0x0100
631 #define LAN8840_ISR_JABBER 0x0080
632 #define LAN8840_ISR_RECEIVE_ERROR 0x0040
633 #define LAN8840_ISR_PAGE_RECEIVED 0x0020
634 #define LAN8840_ISR_PAR_DETECT_FAULT 0x0010
635 #define LAN8840_ISR_LP_ACK 0x0008
636 #define LAN8840_ISR_LINK_DOWN 0x0004
637 #define LAN8840_ISR_ADC_FIFO_ERROR 0x0002
638 #define LAN8840_ISR_LINK_UP 0x0001
641 #define LAN8840_AUTOMDI_MDI_SET 0x0080
642 #define LAN8840_AUTOMDI_SWAP_OFF 0x0040
645 #define LAN8840_SPDC_CLK_GATE_OVERRIDE 0x0800
646 #define LAN8840_SPDC_PLL_DIS 0x0400
647 #define LAN8840_SPDC_IO_DC_TEST_EN 0x0080
648 #define LAN8840_SPDC_VOH 0x0040
651 #define LAN8840_EXT_LOOPBACK_EXT_LPBK 0x0008
654 #define LAN8840_PHYCON_INT_POL_INVERT 0x4000
655 #define LAN8840_PHYCON_JABBER_EN 0x0200
656 #define LAN8840_PHYCON_SQE_TEST_EN 0x0100
657 #define LAN8840_PHYCON_SPEED_1000BT 0x0040
658 #define LAN8840_PHYCON_SPEED_100BTX 0x0020
659 #define LAN8840_PHYCON_SPEED_10BT 0x0010
660 #define LAN8840_PHYCON_DUPLEX_STATUS 0x0008
661 #define LAN8840_PHYCON_1000BT_MS_STATUS 0x0004
662 #define LAN8840_PHYCON_SOFT_RESET 0x0002
663 #define LAN8840_PHYCON_LINK_STATUS_CHECK_FAIL 0x0001
666 #define LAN8840_COMMON_CTRL_SINGLE_LED 0x0010
667 #define LAN8840_COMMON_CTRL_CLK125_EN 0x0002
668 #define LAN8840_COMMON_CTRL_ALL_PHYAD_EN 0x0001
671 #define LAN8840_STRAP_STAT_LEDPOLX_STRAP_IN_STATUS 0x3F00
672 #define LAN8840_STRAP_STAT_LED_MODE_STRAP_IN_STATUS 0x0080
673 #define LAN8840_STRAP_STAT_CLK125_EN_STRAP_IN_STATUS 0x0020
674 #define LAN8840_STRAP_STAT_PHYAD_2_0_STRAP_IN_STATUS 0x001F
677 #define LAN8840_OP_MODE_STRAP_OVERRIDE_MAGJACK_MODE 0x4000
678 #define LAN8840_OP_MODE_STRAP_OVERRIDE_1000_FD_SLAVE_MODE 0x2000
679 #define LAN8840_OP_MODE_STRAP_OVERRIDE_100_HD_MODE 0x1000
680 #define LAN8840_OP_MODE_STRAP_OVERRIDE_100_FD_MODE 0x0800
681 #define LAN8840_OP_MODE_STRAP_OVERRIDE_1000_FD_MASTER_MODE 0x0400
682 #define LAN8840_OP_MODE_STRAP_OVERRIDE_SPD_PLL_DIS_MODE 0x0200
683 #define LAN8840_OP_MODE_STRAP_OVERRIDE_SPD_PLL_EN_MODE 0x0100
684 #define LAN8840_OP_MODE_STRAP_OVERRIDE_IDDQ_SCAN_MODE 0x0080
685 #define LAN8840_OP_MODE_STRAP_OVERRIDE_NTREE_MODE 0x0010
688 #define LAN8840_OP_MODE_STRAP_STRAP_MAGJACK_MODE 0x4000
689 #define LAN8840_OP_MODE_STRAP_STRAP_1000_FD_SLAVE_MODE 0x2000
690 #define LAN8840_OP_MODE_STRAP_STRAP_100_HD_MODE 0x1000
691 #define LAN8840_OP_MODE_STRAP_STRAP_100_FD_MODE 0x0800
692 #define LAN8840_OP_MODE_STRAP_STRAP_1000_FD_MASTER_MODE 0x0400
693 #define LAN8840_OP_MODE_STRAP_STRAP_SPD_PLL_DIS_MODE 0x0200
694 #define LAN8840_OP_MODE_STRAP_STRAP_SPD_PLL_EN_MODE 0x0100
695 #define LAN8840_OP_MODE_STRAP_STRAP_IDDQ_SCAN_MODE 0x0080
696 #define LAN8840_OP_MODE_STRAP_STRAP_NTREE_MODE 0x0010
699 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW_INV_RGMII_TXC_IN 0x0100
700 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW_RX_CTL_SKEW 0x00F0
701 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW_RX_CTL_SKEW_DEFAULT 0x0070
702 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW_TX_CTL_SKEW 0x000F
703 #define LAN8840_CLOCK_INV_CTRL_SIGNAL_PAD_SKEW_TX_CTL_SKEW_DEFAULT 0x0007
706 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD3_PAD_SKEW 0xF000
707 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD3_PAD_SKEW_DEFAULT 0x7000
708 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD2_PAD_SKEW 0x0F00
709 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD2_PAD_SKEW_DEFAULT 0x0700
710 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD1_PAD_SKEW 0x00F0
711 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD1_PAD_SKEW_DEFAULT 0x0070
712 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD0_PAD_SKEW 0x000F
713 #define LAN8840_RGMII_RX_DATA_PAD_SKEW_RXD0_PAD_SKEW_DEFAULT 0x0007
716 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD3_PAD_SKEW 0xF000
717 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD3_PAD_SKEW_DEFAULT 0x7000
718 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD2_PAD_SKEW 0x0F00
719 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD2_PAD_SKEW_DEFAULT 0x0700
720 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD1_PAD_SKEW 0x00F0
721 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD1_PAD_SKEW_DEFAULT 0x0070
722 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD0_PAD_SKEW 0x000F
723 #define LAN8840_RGMII_TX_DATA_PAD_SKEW_TXD0_PAD_SKEW_DEFAULT 0x0007
726 #define LAN8840_CLK_PAD_SKEW_TXC_PAD_IN_SKEW 0x03E0
727 #define LAN8840_CLK_PAD_SKEW_RXC_PAD_IN_SKEW 0x001F
730 #define LAN8840_SELF_TEST_PKT_COUNT_LO_SELF_TEST_FRAME_CNT_15_0 0xFFFF
733 #define LAN8840_SELF_TEST_PKT_COUNT_HI_SELF_TEST_FRAME_CNT_31_16 0xFFFF
736 #define LAN8840_SELF_TEST_STAT_SELF_TEST_DONE 0x0001
739 #define LAN8840_SELF_TEST_FRAME_COUNT_EN_SELF_TEST_FRAME_CNT_EN 0x0001
742 #define LAN8840_SELF_TEST_PGEN_EN_FORCE_SELF_TEST_PGEN_EN 0x0010
743 #define LAN8840_SELF_TEST_PGEN_EN_SELF_TEST_PGEN_EN 0x0001
746 #define LAN8840_SELF_TEST_EN_SELF_TEST_EXTERNAL_CLK_SEL 0x8000
747 #define LAN8840_SELF_TEST_EN_SELF_TEST_PACKET_TYPE 0x6000
748 #define LAN8840_SELF_TEST_EN_SELF_TEST_PACKET_TYPE_RANDOM_DATA_BIT 0x0000
749 #define LAN8840_SELF_TEST_EN_SELF_TEST_PACKET_TYPE_ALL_ZEROES 0x2000
750 #define LAN8840_SELF_TEST_EN_SELF_TEST_PACKET_TYPE_ALL_ONES 0x4000
751 #define LAN8840_SELF_TEST_EN_SELF_TEST_PACKET_TYPE_RANDOM 0x6000
752 #define LAN8840_SELF_TEST_EN_SELF_TEST_CLR_CNT_ON_LINK_DOWN 0x0200
753 #define LAN8840_SELF_TEST_EN_SELF_TEST_CRC_CHECKER_EN 0x0100
754 #define LAN8840_SELF_TEST_EN_GMII_TX_CRC_CHECK_EN 0x0010
757 #define LAN8840_RX_DLL_CTRL_RXDLL_TUNE_DIS 0x8000
758 #define LAN8840_RX_DLL_CTRL_BYPASS_RXDLL 0x4000
759 #define LAN8840_RX_DLL_CTRL_RXDLL_TAP_SEL 0x3F80
760 #define LAN8840_RX_DLL_CTRL_RXDLL_TAP_SEL_DEFAULT 0x0D80
761 #define LAN8840_RX_DLL_CTRL_RXDLL_TAP_ADJ 0x007F
762 #define LAN8840_RX_DLL_CTRL_RXDLL_TAP_ADJ_DEFAULT 0x001B
765 #define LAN8840_TX_DLL_CTRL_TXDLL_TUNE_DIS 0x8000
766 #define LAN8840_TX_DLL_CTRL_BYPASS_TXDLL 0x4000
767 #define LAN8840_TX_DLL_CTRL_TXDLL_TAP_SEL 0x3F80
768 #define LAN8840_TX_DLL_CTRL_TXDLL_TAP_SEL_DEFAULT 0x0D80
769 #define LAN8840_TX_DLL_CTRL_TXDLL_TAP_ADJ 0x007F
770 #define LAN8840_TX_DLL_CTRL_TXDLL_TAP_ADJ_DEFAULT 0x001B
773 #define LAN8840_1000M_FAST_LINK_DOWN_EN_1000M_FAST_LINK_DOWN_EN 0x0100
void lan8840EventHandler(NetInterface *interface)
LAN8840 event handler.
error_t lan8840Init(NetInterface *interface)
LAN8840 PHY transceiver initialization.
void lan8840DumpPhyReg(NetInterface *interface)
Dump PHY registers for debugging purpose.
void lan8840InitHook(NetInterface *interface)
LAN8840 custom configuration.
void lan8840WriteMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
void lan8840Tick(NetInterface *interface)
LAN8840 timer handler.
void lan8840DisableIrq(NetInterface *interface)
Disable interrupts.
uint16_t lan8840ReadMmdReg(NetInterface *interface, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
const PhyDriver lan8840PhyDriver
LAN8840 Ethernet PHY driver.
void lan8840EnableIrq(NetInterface *interface)
Enable interrupts.
Network interface controller abstraction layer.
void lan8840WritePhyReg(NetInterface *interface, uint8_t address, uint16_t data)
Write PHY register.
uint16_t lan8840ReadPhyReg(NetInterface *interface, uint8_t address)
Read PHY register.