Go to the documentation of this file.
31 #ifndef _NCN26010_DRIVER_H
32 #define _NCN26010_DRIVER_H
38 #ifndef NCN26010_PLCA_SUPPORT
39 #define NCN26010_PLCA_SUPPORT ENABLED
40 #elif (NCN26010_PLCA_SUPPORT != ENABLED && NCN26010_PLCA_SUPPORT != DISABLED)
41 #error NCN26010_PLCA_SUPPORT parameter is not valid
45 #ifndef NCN26010_NODE_COUNT
46 #define NCN26010_NODE_COUNT 8
47 #elif (NCN26010_NODE_COUNT < 0 || NCN26010_NODE_COUNT > 255)
48 #error NCN26010_NODE_COUNT parameter is not valid
52 #ifndef NCN26010_LOCAL_ID
53 #define NCN26010_LOCAL_ID 1
54 #elif (NCN26010_LOCAL_ID < 0 || NCN26010_LOCAL_ID > 255)
55 #error NCN26010_LOCAL_ID parameter is not valid
59 #ifndef NCN26010_ETH_RX_BUFFER_SIZE
60 #define NCN26010_ETH_RX_BUFFER_SIZE 1536
61 #elif (NCN26010_ETH_RX_BUFFER_SIZE != 1536)
62 #error NCN26010_ETH_RX_BUFFER_SIZE parameter is not valid
66 #define NCN26010_CHUNK_PAYLOAD_SIZE 64
69 #define NCN26010_TX_HEADER_DNC 0x80000000
70 #define NCN26010_TX_HEADER_SEQ 0x40000000
71 #define NCN26010_TX_HEADER_NORX 0x20000000
72 #define NCN26010_TX_HEADER_VS 0x00C00000
73 #define NCN26010_TX_HEADER_DV 0x00200000
74 #define NCN26010_TX_HEADER_SV 0x00100000
75 #define NCN26010_TX_HEADER_SWO 0x000F0000
76 #define NCN26010_TX_HEADER_EV 0x00004000
77 #define NCN26010_TX_HEADER_EBO 0x00003F00
78 #define NCN26010_TX_HEADER_TSC 0x000000C0
79 #define NCN26010_TX_HEADER_P 0x00000001
82 #define NCN26010_RX_FOOTER_EXST 0x80000000
83 #define NCN26010_RX_FOOTER_HDRB 0x40000000
84 #define NCN26010_RX_FOOTER_SYNC 0x20000000
85 #define NCN26010_RX_FOOTER_RCA 0x1F000000
86 #define NCN26010_RX_FOOTER_VS 0x00C00000
87 #define NCN26010_RX_FOOTER_DV 0x00200000
88 #define NCN26010_RX_FOOTER_SV 0x00100000
89 #define NCN26010_RX_FOOTER_SWO 0x000F0000
90 #define NCN26010_RX_FOOTER_FD 0x00008000
91 #define NCN26010_RX_FOOTER_EV 0x00004000
92 #define NCN26010_RX_FOOTER_EBO 0x00003F00
93 #define NCN26010_RX_FOOTER_RTSA 0x00000080
94 #define NCN26010_RX_FOOTER_RTSP 0x00000040
95 #define NCN26010_RX_FOOTER_TXC 0x0000003E
96 #define NCN26010_RX_FOOTER_P 0x00000001
99 #define NCN26010_CTRL_HEADER_DNC 0x80000000
100 #define NCN26010_CTRL_HEADER_HDRB 0x40000000
101 #define NCN26010_CTRL_HEADER_WNR 0x20000000
102 #define NCN26010_CTRL_HEADER_AID 0x10000000
103 #define NCN26010_CTRL_HEADER_MMS 0x0F000000
104 #define NCN26010_CTRL_HEADER_ADDR 0x00FFFF00
105 #define NCN26010_CTRL_HEADER_LEN 0x000000FE
106 #define NCN26010_CTRL_HEADER_P 0x00000001
109 #define NCN26010_MMS_STD 0x00
110 #define NCN26010_MMS_MAC 0x01
111 #define NCN26010_MMS_PHY_PCS 0x02
112 #define NCN26010_MMS_PHY_PMA_PMD 0x03
113 #define NCN26010_MMS_PHY_PLCA 0x04
114 #define NCN26010_MMS_PHY_VS 0x0C
117 #define NCN26010_IDVER 0x00, 0x0000
118 #define NCN26010_PHYID 0x00, 0x0001
119 #define NCN26010_STDCAP 0x00, 0x0002
120 #define NCN26010_RESET 0x00, 0x0003
121 #define NCN26010_CONFIG0 0x00, 0x0004
122 #define NCN26010_STATUS0 0x00, 0x0008
123 #define NCN26010_BUFSTS 0x00, 0x000B
124 #define NCN26010_IMSK0 0x00, 0x000C
125 #define NCN26010_PHYCTRL 0x00, 0xFF00
126 #define NCN26010_PHYSTATUS 0x00, 0xFF01
127 #define NCN26010_PHYID0 0x00, 0xFF02
128 #define NCN26010_PHYID1 0x00, 0xFF03
131 #define NCN26010_MACCTRL0 0x01, 0x0000
132 #define NCN26010_ADDRFILT0L 0x01, 0x0010
133 #define NCN26010_ADDRFILT0H 0x01, 0x0011
134 #define NCN26010_ADDRFILT1L 0x01, 0x0012
135 #define NCN26010_ADDRFILT1H 0x01, 0x0013
136 #define NCN26010_ADDRFILT2L 0x01, 0x0014
137 #define NCN26010_ADDRFILT2H 0x01, 0x0015
138 #define NCN26010_ADDRFILT3L 0x01, 0x0016
139 #define NCN26010_ADDRFILT3H 0x01, 0x0017
140 #define NCN26010_ADDRMASK0L 0x01, 0x0020
141 #define NCN26010_ADDRMASK0H 0x01, 0x0021
142 #define NCN26010_ADDRMASK1L 0x01, 0x0022
143 #define NCN26010_ADDRMASK1H 0x01, 0x0023
144 #define NCN26010_ADDRMASK2L 0x01, 0x0024
145 #define NCN26010_ADDRMASK2H 0x01, 0x0025
146 #define NCN26010_ADDRMASK3L 0x01, 0x0026
147 #define NCN26010_ADDRMASK3H 0x01, 0x0027
148 #define NCN26010_STOCTETSTXL 0x01, 0x0030
149 #define NCN26010_STOCTETSTXH 0x01, 0x0031
150 #define NCN26010_STFRAMESTXOK 0x01, 0x0032
151 #define NCN26010_STBCASTTXOK 0x01, 0x0033
152 #define NCN26010_STMCASTTXOK 0x01, 0x0034
153 #define NCN26010_STFRAMESTX64 0x01, 0x0035
154 #define NCN26010_STFRAMESTX65 0x01, 0x0036
155 #define NCN26010_STFRAMESTX128 0x01, 0x0037
156 #define NCN26010_STFRAMESTX256 0x01, 0x0038
157 #define NCN26010_STFRAMESTX512 0x01, 0x0039
158 #define NCN26010_STFRAMESTX1024 0x01, 0x003A
159 #define NCN26010_STUNDERFLOW 0x01, 0x003B
160 #define NCN26010_STSINGLECOL 0x01, 0x003C
161 #define NCN26010_STMULTICOL 0x01, 0x003D
162 #define NCN26010_STEXCESSCOL 0x01, 0x003E
163 #define NCN26010_STDEFERREDTX 0x01, 0x003F
164 #define NCN26010_STCRSERR 0x01, 0x0040
165 #define NCN26010_STOCTETSRXL 0x01, 0x0041
166 #define NCN26010_STOCTETSRXH 0x01, 0x0042
167 #define NCN26010_STFRAMESRXOK 0x01, 0x0043
168 #define NCN26010_STBCASTRXOK 0x01, 0x0044
169 #define NCN26010_STMCASTRXOK 0x01, 0x0045
170 #define NCN26010_STFRAMESRX64 0x01, 0x0046
171 #define NCN26010_STFRAMESRX65 0x01, 0x0047
172 #define NCN26010_STFRAMESRX128 0x01, 0x0048
173 #define NCN26010_STFRAMESRX256 0x01, 0x0049
174 #define NCN26010_STFRAMESRX512 0x01, 0x004A
175 #define NCN26010_STFRAMESRX1024 0x01, 0x004B
176 #define NCN26010_STRUNTSERR 0x01, 0x004C
177 #define NCN26010_STRXTOOLONG 0x01, 0x004D
178 #define NCN26010_STFCSERRS 0x01, 0x004E
179 #define NCN26010_STSYMBOLERRS 0x01, 0x004F
180 #define NCN26010_STALIGNERRS 0x01, 0x0050
181 #define NCN26010_STRXOVERFLOW 0x01, 0x0051
182 #define NCN26010_STRXDROPPED 0x01, 0x0052
185 #define NCN26010_PCS_DEVINPKG1 0x02, 0x0005
186 #define NCN26010_PCS_DEVINPKG2 0x02, 0x0006
187 #define NCN26010_T1SPCSCTRL 0x02, 0x08F3
188 #define NCN26010_T1SPCSSTATUS 0x02, 0x08F4
189 #define NCN26010_T1SPCSRMTJAB 0x02, 0x08F5
190 #define NCN26010_T1SPCSPHYCOL 0x02, 0x08F6
193 #define NCN26010_PMA_DEVINPKG1 0x03, 0x0005
194 #define NCN26010_PMA_DEVINPKG2 0x03, 0x0006
195 #define NCN26010_BASET1EXTABLTY 0x03, 0x0012
196 #define NCN26010_T1SPMACTRL 0x03, 0x08F9
197 #define NCN26010_T1SPMASTS 0x03, 0x08FA
198 #define NCN26010_T1STMCTL 0x03, 0x08FB
201 #define NCN26010_CHIPREV 0x04, 0x8000
202 #define NCN26010_PHYCFG1 0x04, 0x8001
203 #define NCN26010_PLCAEXT 0x04, 0x8002
204 #define NCN26010_PMATUNE0 0x04, 0x8003
205 #define NCN26010_PMATUNE1 0x04, 0x8004
206 #define NCN26010_PLCAREGMAP 0x04, 0xCA00
207 #define NCN26010_PLCACTRL0 0x04, 0xCA01
208 #define NCN26010_PLCACTRL1 0x04, 0xCA02
209 #define NCN26010_PLCASTS 0x04, 0xCA03
210 #define NCN26010_PLCATOTMR 0x04, 0xCA04
211 #define NCN26010_PLCABURST 0x04, 0xCA05
214 #define NCN26010_MIIMIRQCTRL 0x0C, 0x0010
215 #define NCN26010_MIIMIRQSTS 0x0C, 0x0011
216 #define NCN26010_DIOCFG 0x0C, 0x0012
217 #define NCN26010_PHYTWEAK 0x0C, 0x1001
218 #define NCN26010_MACID0 0x0C, 0x1002
219 #define NCN26010_MACID1 0x0C, 0x1003
220 #define NCN26010_CHIPINFO 0x0C, 0x1004
221 #define NCN26010_NVMHEALTH 0x0C, 0x1005
224 #define NCN26010_IDVER_MAJVER 0x000000F0
225 #define NCN26010_IDVER_MAJVER_DEFAULT 0x00000010
226 #define NCN26010_IDVER_MINVER 0x0000000F
227 #define NCN26010_IDVER_MINVER_DEFAULT 0x00000001
230 #define NCN26010_PHYID_OUI 0xFFFFFC00
231 #define NCN26010_PHYID_OUI_DEFAULT 0x180FF400
232 #define NCN26010_PHYID_MODEL 0x000003F0
233 #define NCN26010_PHYID_MODEL_DEFAULT 0x000001A0
234 #define NCN26010_PHYID_REV 0x0000000F
235 #define NCN26010_PHYID_REV_DEFAULT 0x00000001
238 #define NCN26010_STDCAP_TXFCSVC 0x00000400
239 #define NCN26010_STDCAP_IPRAC 0x00000200
240 #define NCN26010_STDCAP_DPRAC 0x00000100
241 #define NCN26010_STDCAP_CTC 0x00000080
242 #define NCN26010_STDCAP_FTC 0x00000040
243 #define NCN26010_STDCAP_AIDC 0x00000020
244 #define NCN26010_STDCAP_SEQ 0x00000010
245 #define NCN26010_STDCAP_MINCPS 0x00000007
248 #define NCN26010_RESET_RESET 0x00000001
251 #define NCN26010_CONFIG0_SYNC 0x00008000
252 #define NCN26010_CONFIG0_TXFCSVE 0x00004000
253 #define NCN26010_CONFIG0_CSARFE 0x00002000
254 #define NCN26010_CONFIG0_ZARFE 0x00001000
255 #define NCN26010_CONFIG0_TXCTHRESH 0x00000C00
256 #define NCN26010_CONFIG0_TXCTHRESH_1_CREDIT 0x00000000
257 #define NCN26010_CONFIG0_TXCTHRESH_4_CREDITS 0x00000400
258 #define NCN26010_CONFIG0_TXCTHRESH_8_CREDITS 0x00000800
259 #define NCN26010_CONFIG0_TXCTHRESH_16_CREDITS 0x00000C00
260 #define NCN26010_CONFIG0_TXCTE 0x00000200
261 #define NCN26010_CONFIG0_RXCTE 0x00000100
262 #define NCN26010_CONFIG0_FTSE 0x00000080
263 #define NCN26010_CONFIG0_FTSS 0x00000040
264 #define NCN26010_CONFIG0_PROTE 0x00000020
265 #define NCN26010_CONFIG0_CPS 0x00000007
266 #define NCN26010_CONFIG0_CPS_8_BYTES 0x00000003
267 #define NCN26010_CONFIG0_CPS_16_BYTES 0x00000004
268 #define NCN26010_CONFIG0_CPS_32_BYTES 0x00000005
269 #define NCN26010_CONFIG0_CPS_64_BYTES 0x00000006
272 #define NCN26010_STATUS0_CDPE 0x00001000
273 #define NCN26010_STATUS0_TXFCSE 0x00000800
274 #define NCN26010_STATUS0_TTSCAC 0x00000400
275 #define NCN26010_STATUS0_TTSCAB 0x00000200
276 #define NCN26010_STATUS0_TTSCAA 0x00000100
277 #define NCN26010_STATUS0_PHYINT 0x00000080
278 #define NCN26010_STATUS0_RESETC 0x00000040
279 #define NCN26010_STATUS0_HDRE 0x00000020
280 #define NCN26010_STATUS0_LOFE 0x00000010
281 #define NCN26010_STATUS0_RXBOE 0x00000008
282 #define NCN26010_STATUS0_TXBUE 0x00000004
283 #define NCN26010_STATUS0_TXBOE 0x00000002
284 #define NCN26010_STATUS0_TXPE 0x00000001
287 #define NCN26010_BUFSTS_TXC 0x0000FF00
288 #define NCN26010_BUFSTS_RCA 0x000000FF
291 #define NCN26010_IMSK0_CDPEM 0x00001000
292 #define NCN26010_IMSK0_TXFCSEM 0x00000800
293 #define NCN26010_IMSK0_PHYINTM 0x00000080
294 #define NCN26010_IMSK0_RESETCM 0x00000040
295 #define NCN26010_IMSK0_HDREM 0x00000020
296 #define NCN26010_IMSK0_LOFEM 0x00000010
297 #define NCN26010_IMSK0_RXDOEM 0x00000008
298 #define NCN26010_IMSK0_TXBUEM 0x00000004
299 #define NCN26010_IMSK0_TXBOEM 0x00000002
300 #define NCN26010_IMSK0_TXPEM 0x00000001
303 #define NCN26010_PHYCTRL_RESET 0x00008000
304 #define NCN26010_PHYCTRL_LOOPBACK 0x00004000
305 #define NCN26010_PHYCTRL_SPEED_LSB 0x00002000
306 #define NCN26010_PHYCTRL_LINK_CONTROL 0x00001000
307 #define NCN26010_PHYCTRL_ISOLATE 0x00000400
308 #define NCN26010_PHYCTRL_LINK_RESET 0x00000200
309 #define NCN26010_PHYCTRL_DUPLEX_MODE 0x00000100
310 #define NCN26010_PHYCTRL_COLLISION_TEST 0x00000080
311 #define NCN26010_PHYCTRL_SPEED_MSB 0x00000040
314 #define NCN26010_PHYSTATUS_10_HALF_DUPLEX 0x00000800
315 #define NCN26010_PHYSTATUS_UNIDIRECTIONAL_ABILITY 0x00000080
316 #define NCN26010_PHYSTATUS_MF_PREAMBLE_SUPPR 0x00000040
317 #define NCN26010_PHYSTATUS_LINK_NEGOTIATION_COMPLETE 0x00000020
318 #define NCN26010_PHYSTATUS_REMOTE_FAULT 0x00000010
319 #define NCN26010_PHYSTATUS_AUTO_NEGOTIATION_ABILITY 0x00000008
320 #define NCN26010_PHYSTATUS_LINK_STATUS 0x00000004
321 #define NCN26010_PHYSTATUS_JABBER_DETECT 0x00000002
322 #define NCN26010_PHYSTATUS_EXTENDED_CAPABILITY 0x00000001
325 #define NCN26010_PHYID0_OUI_MSB 0x0000FFFF
326 #define NCN26010_PHYID0_OUI_MSB_DEFAULT 0x0000180F
329 #define NCN26010_PHYID1_OUI_LSB 0x0000FC00
330 #define NCN26010_PHYID1_OUI_LSB_DEFAULT 0x0000D400
331 #define NCN26010_PHYID1_MODEL_NUM 0x000003F0
332 #define NCN26010_PHYID1_MODEL_NUM_DEFAULT 0x000001A0
333 #define NCN26010_PHYID1_REV_NUM 0x0000000F
334 #define NCN26010_PHYID1_REV_NUM_DEFAULT 0x00000001
337 #define NCN26010_MACCTRL0_IPGNF 0x00200000
338 #define NCN26010_MACCTRL0_BKOD 0x00100000
339 #define NCN26010_MACCTRL0_NFCSF 0x00080000
340 #define NCN26010_MACCTRL0_MCSF 0x00040000
341 #define NCN26010_MACCTRL0_BCSF 0x00020000
342 #define NCN26010_MACCTRL0_ADRF 0x00010000
343 #define NCN26010_MACCTRL0_FCSA 0x00000100
344 #define NCN26010_MACCTRL0_TXEN 0x00000002
345 #define NCN26010_MACCTRL0_RXEN 0x00000001
348 #define NCN26010_ADDRFILTnL_ADDRFILT_31_0 0xFFFFFFFF
351 #define NCN26010_ADDRFILTnH_EN 0x80000000
352 #define NCN26010_ADDRFILTnH_ADDRFILT_47_32 0x0000FFFF
355 #define NCN26010_ADDRMASKnL_ADDRMASK_31_0 0xFFFFFFFF
358 #define NCN26010_ADDRMASKnH_ADDRMASK_47_32 0x00008000
361 #define NCN26010_STOCTETSTXL_STOCTETSTXL_31_0 0xFFFFFFFF
364 #define NCN26010_STOCTETSTXH_STOCTETSTXL_47_32 0x0000FFFF
367 #define NCN26010_STUNDERFLOW_STUNDERFLOW 0x000003FF
370 #define NCN26010_STSINGLECOL_STSINGLECOL 0x0003FFFF
373 #define NCN26010_STMULTICOL_STMULTICOL 0x0003FFFF
376 #define NCN26010_STEXCESSCOL_STEXCESSCOL 0x000003FF
379 #define NCN26010_STDEFERREDTX_STDEFERREDTX 0x0003FFFF
382 #define NCN26010_STCRSERR_STCRSERR 0x000003FF
385 #define NCN26010_STOCTETSRXL_STOCTETSRX_31_0 0xFFFFFFFF
388 #define NCN26010_STOCTETSRXH_STOCTETSRX_47_32 0x0000FFFF
391 #define NCN26010_STRUNTSERR_STRUNTERR 0x000003FF
394 #define NCN26010_STRXTOOLONG_STRXTOOLONG 0x000003FF
397 #define NCN26010_STFCSERRS_STFCSERRS 0x000003FF
400 #define NCN26010_STSYMBOLERRS_STSYMBOLERRS 0x000003FF
403 #define NCN26010_STALIGNERRS_STALIGNERRS 0x000003FF
406 #define NCN26010_STRXOVERFLOW_STRXOVERFLOW 0x000003FF
409 #define NCN26010_PCS_DEVINPKG1_PCS_PRESENT 0x0008
410 #define NCN26010_PCS_DEVINPKG1_PMA_PRESENT 0x0002
411 #define NCN26010_PCS_DEVINPKG1_CLAUSE_22_REGS_PRESENT 0x0001
414 #define NCN26010_T1SPCSCTRL_PCS_RESET 0x8000
415 #define NCN26010_T1SPCSCTRL_LOOPBACK 0x4000
418 #define NCN26010_T1SPCSSTATUS_FAULT 0x0080
421 #define NCN26010_T1SPCSRMTJAB_PCS_REMOTE_JABBER_COUNT 0xFFFF
424 #define NCN26010_T1SPCSPHYCOL_PCS_PHY_COL_COUNT 0xFFFF
427 #define NCN26010_PMA_DEVINPKG1_PCS_PRESENT 0x0008
428 #define NCN26010_PMA_DEVINPKG1_PMA_PRESENT 0x0002
429 #define NCN26010_PMA_DEVINPKG1_CLAUSE_22_REGS_PRESENT 0x0001
432 #define NCN26010_BASET1EXTABLTY_10BASE_T1S 0x0008
435 #define NCN26010_T1SPMACTRL_PMA_RESET 0x8000
436 #define NCN26010_T1SPMACTRL_TX_DIS 0x4000
437 #define NCN26010_T1SPMACTRL_LOW_POWER_MODE 0x0800
438 #define NCN26010_T1SPMACTRL_MULTI_DROP_EN 0x0400
439 #define NCN26010_T1SPMACTRL_LOOPBACK_MODE 0x0001
442 #define NCN26010_T1SPMASTS_LOOPBACK_ABILITY 0x2000
443 #define NCN26010_T1SPMASTS_LOW_POWER_ABILITY 0x0800
444 #define NCN26010_T1SPMASTS_MULTI_DROP_ABILITY 0x0400
445 #define NCN26010_T1SPMASTS_RECEIVE_FAULT_ABILITY 0x0200
446 #define NCN26010_T1SPMASTS_REMOTE_JABBER 0x0002
449 #define NCN26010_T1STMCTL_TEST_MODE 0xE000
450 #define NCN26010_T1STMCTL_TEST_MODE_NORMAL 0x0000
451 #define NCN26010_T1STMCTL_TEST_MODE_TX_OUT_VOLTAGE_TEST 0x2000
452 #define NCN26010_T1STMCTL_TEST_MODE_TX_OUT_DROP_TEST 0x4000
453 #define NCN26010_T1STMCTL_TEST_MODE_TX_PSD_MASK 0x6000
454 #define NCN26010_T1STMCTL_TEST_MODE_TX_HIGH_Z_TEST 0x8000
457 #define NCN26010_CHIPREV_MAJOR_REV 0xF000
458 #define NCN26010_CHIPREV_MAJOR_REV_DEFAULT 0x1000
459 #define NCN26010_CHIPREV_MINOR_REV 0x0F00
460 #define NCN26010_CHIPREV_MINOR_REV_DEFAULT 0x0000
461 #define NCN26010_CHIPREV_STAGE 0x00C0
462 #define NCN26010_CHIPREV_STAGE_DEFAULT 0x00C0
463 #define NCN26010_CHIPREV_PATCH 0x003F
464 #define NCN26010_CHIPREV_PATCH_DEFAULT 0x0001
467 #define NCN26010_PHYCFG1_ENHANCED_NOISE_IMMUNITY 0x0080
468 #define NCN26010_PHYCFG1_UNJAB_TIMER_EN 0x0040
469 #define NCN26010_PHYCFG1_SCRAMBLER_DIS 0x0004
470 #define NCN26010_PHYCFG1_NO_COL_MASKING 0x0002
471 #define NCN26010_PHYCFG1_RX_DELAY 0x0001
474 #define NCN26010_PLCAEXT_PLCA_PRECEDENCE 0x8000
475 #define NCN26010_PLCAEXT_COORDINATOR_MODE 0x0002
476 #define NCN26010_PLCAEXT_COORDINATOR_ROLE 0x0001
479 #define NCN26010_PMATUNE0_PLCA_BEACON_DETECT_THRESHOLD 0x3F00
480 #define NCN26010_PMATUNE0_DRIFT_COMPENSATION_WIN_SEL 0x0007
483 #define NCN26010_PMATUNE1_PKT_PREAMBLE_DETEC_THRESHOLD 0x3F00
484 #define NCN26010_PMATUNE1_COMMIT_DETECT_THRESHOLD 0x003F
487 #define NCN26010_PLCAREGMAP_MAPID 0xFF00
488 #define NCN26010_PLCAREGMAP_MAPVER 0x00FF
491 #define NCN26010_PLCACTRL0_PCLA_EN 0x8000
492 #define NCN26010_PLCACTRL0_PLCA_RESET 0x4000
495 #define NCN26010_PLCACTRL1_NCNT 0xFF00
496 #define NCN26010_PLCACTRL1_ID 0x00FF
499 #define NCN26010_PLCASTS_PST 0x8000
502 #define NCN26010_PLCATOTMR_TOTMR 0x00FF
503 #define NCN26010_PLCATOTMR_TOTMR_DEFAULT 0x0018
506 #define NCN26010_PLCABURST_MAXBC 0xFF00
507 #define NCN26010_PLCABURST_MAXBC_DEFAULT 0x0000
508 #define NCN26010_PLCABURST_BTMR 0x00FF
509 #define NCN26010_PLCABURST_BTMR_DEFAULT 0x0080
512 #define NCN26010_MIIMIRQCTRL_PHY_COL_REPORT 0x0020
513 #define NCN26010_MIIMIRQCTRL_PLCA_RECOVERY_REPORT 0x0010
514 #define NCN26010_MIIMIRQCTRL_REMOTE_JABBER_REPORT 0x0008
515 #define NCN26010_MIIMIRQCTRL_LOCAL_JABBER_REPORT 0x0004
516 #define NCN26010_MIIMIRQCTRL_PLCA_STATUS_CHANGE_REPORT 0x0002
517 #define NCN26010_MIIMIRQCTRL_LINK_STATUS_CHANGE_REPORT 0x0001
520 #define NCN26010_MIIMIRQSTS_RESET_STATUS 0x8000
521 #define NCN26010_MIIMIRQSTS_PHY_COL 0x0020
522 #define NCN26010_MIIMIRQSTS_PLCA_RECOVERY 0x0010
523 #define NCN26010_MIIMIRQSTS_REMOTE_JABBER 0x0008
524 #define NCN26010_MIIMIRQSTS_LOCAL_JABBER 0x0004
525 #define NCN26010_MIIMIRQSTS_PLCA_STATUS_CHANGE 0x0002
526 #define NCN26010_MIIMIRQSTS_LINK_STATUS_CHANGE 0x0001
529 #define NCN26010_DIOCFG_SLEW_RATE_1 0x8000
530 #define NCN26010_DIOCFG_PULL_EN_1 0x4000
531 #define NCN26010_DIOCFG_PULL_TYPE_1 0x2000
532 #define NCN26010_DIOCFG_PULL_TYPE_1_PULL_UP 0x0000
533 #define NCN26010_DIOCFG_PULL_TYPE_1_PULL_DOWN 0x2000
534 #define NCN26010_DIOCFG_FN1 0x1E00
535 #define NCN26010_DIOCFG_FN1_DISABLE 0x0000
536 #define NCN26010_DIOCFG_FN1_GPIO 0x0200
537 #define NCN26010_DIOCFG_FN1_SFD_TX 0x0400
538 #define NCN26010_DIOCFG_FN1_SFD_RX 0x0600
539 #define NCN26010_DIOCFG_FN1_LED_LINK_CTRL 0x0800
540 #define NCN26010_DIOCFG_FN1_LED_PLCA_STATUS 0x0A00
541 #define NCN26010_DIOCFG_FN1_LED_TX 0x0C00
542 #define NCN26010_DIOCFG_FN1_LED_RX 0x0E00
543 #define NCN26010_DIOCFG_FN1_CLK25M 0x1000
544 #define NCN26010_DIOCFG_FN1_SFD_RX_TX 0x1600
545 #define NCN26010_DIOCFG_FN1_LED_TX_RX 0x1E00
546 #define NCN26010_DIOCFG_VAL1 0x0100
547 #define NCN26010_DIOCFG_SLEW_RATE_0 0x0080
548 #define NCN26010_DIOCFG_PULL_EN_0 0x0040
549 #define NCN26010_DIOCFG_PULL_TYPE_0 0x0020
550 #define NCN26010_DIOCFG_PULL_TYPE_0_PULL_UP 0x0000
551 #define NCN26010_DIOCFG_PULL_TYPE_0_PULL_DOWN 0x0020
552 #define NCN26010_DIOCFG_FN0 0x001E
553 #define NCN26010_DIOCFG_FN0_DISABLE 0x0000
554 #define NCN26010_DIOCFG_FN0_GPIO 0x0002
555 #define NCN26010_DIOCFG_FN0_SFD_TX 0x0004
556 #define NCN26010_DIOCFG_FN0_SFD_RX 0x0006
557 #define NCN26010_DIOCFG_FN0_LED_LINK_CTRL 0x0008
558 #define NCN26010_DIOCFG_FN0_LED_PLCA_STATUS 0x000A
559 #define NCN26010_DIOCFG_FN0_LED_TX 0x000C
560 #define NCN26010_DIOCFG_FN0_LED_RX 0x000E
561 #define NCN26010_DIOCFG_FN0_CLK25M 0x0010
562 #define NCN26010_DIOCFG_FN0_SFD_RX_TX 0x0016
563 #define NCN26010_DIOCFG_FN0_LED_TX_RX 0x001E
564 #define NCN26010_DIOCFG_VAL0 0x0001
567 #define NCN26010_PHYTWEAK_TX_GAIN 0xC000
568 #define NCN26010_PHYTWEAK_TX_GAIN_1000_MVPP 0x0000
569 #define NCN26010_PHYTWEAK_TX_GAIN_1100_MVPP 0x4000
570 #define NCN26010_PHYTWEAK_TX_GAIN_900_MVPP 0x8000
571 #define NCN26010_PHYTWEAK_TX_GAIN_800_MVPP 0xC000
572 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD 0x3C00
573 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_150_MVPP 0x0000
574 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_200_MVPP 0x0400
575 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_250_MVPP 0x0800
576 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_300_MVPP 0x0C00
577 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_350_MVPP 0x1000
578 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_400_MVPP 0x1400
579 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_450_MVPP 0x1800
580 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_500_MVPP 0x1C00
581 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_550_MVPP 0x2000
582 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_600_MVPP 0x2400
583 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_650_MVPP 0x2800
584 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_700_MVPP 0x2C00
585 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_750_MVPP 0x3000
586 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_800_MVPP 0x3400
587 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_850_MVPP 0x3800
588 #define NCN26010_PHYTWEAK_RX_CD_THRESHOLD_900_MVPP 0x3C00
589 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD 0x03C0
590 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_150_MVPP 0x0000
591 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_200_MVPP 0x0040
592 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_250_MVPP 0x0080
593 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_300_MVPP 0x00C0
594 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_350_MVPP 0x0100
595 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_400_MVPP 0x0140
596 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_450_MVPP 0x0180
597 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_500_MVPP 0x01C0
598 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_550_MVPP 0x0200
599 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_600_MVPP 0x0240
600 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_650_MVPP 0x0280
601 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_700_MVPP 0x02C0
602 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_750_MVPP 0x0300
603 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_800_MVPP 0x0340
604 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_850_MVPP 0x0380
605 #define NCN26010_PHYTWEAK_RX_ED_THRESHOLD_900_MVPP 0x03C0
606 #define NCN26010_PHYTWEAK_DIGITAL_SLEW_RATE 0x0020
607 #define NCN26010_PHYTWEAK_DIGITAL_SLEW_RATE_SLOW 0x0000
608 #define NCN26010_PHYTWEAK_DIGITAL_SLEW_RATE_FAST 0x0020
609 #define NCN26010_PHYTWEAK_CMC_COMPENSATION 0x0018
610 #define NCN26010_PHYTWEAK_CMC_COMPENSATION_0_TO_0_5_R 0x0000
611 #define NCN26010_PHYTWEAK_CMC_COMPENSATION_0_5_TO_2_25_R 0x0008
612 #define NCN26010_PHYTWEAK_CMC_COMPENSATION_2_25_TO_3_75_R 0x0010
613 #define NCN26010_PHYTWEAK_CMC_COMPENSATION_3_75_TO_5_R 0x0018
614 #define NCN26010_PHYTWEAK_TX_SLEW 0x0004
615 #define NCN26010_PHYTWEAK_TX_SLEW_SLOW 0x0000
616 #define NCN26010_PHYTWEAK_TX_SLEW_FAST 0x0004
617 #define NCN26010_PHYTWEAK_CLK_OUT_EN 0x0001
620 #define NCN26010_MACID0_MACID_15_0 0xFFFF
623 #define NCN26010_MACID1_MACID_23_16 0x00FF
626 #define NCN26010_CHIPINFO_WAFER_Y 0x7F00
627 #define NCN26010_CHIPINFO_WAFER_X 0x007F
630 #define NCN26010_NVMHEALTH_RED_ZONE_NVM_WARNING 0x8000
631 #define NCN26010_NVMHEALTH_RED_ZONE_NVM_ERROR 0x4000
632 #define NCN26010_NVMHEALTH_YELLOW_ZONE_NVM_WARNING 0x2000
633 #define NCN26010_NVMHEALTH_YELLOW_ZONE_NVM_ERROR 0x1000
634 #define NCN26010_NVMHEALTH_GREEN_ZONE_NVM_WARNING 0x0800
635 #define NCN26010_NVMHEALTH_GREEN_ZONE_NVM_ERROR 0x0400
error_t ncn26010SendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.
Structure describing a buffer that spans multiple chunks.
void ncn26010EnableIrq(NetInterface *interface)
Enable interrupts.
void ncn26010EventHandler(NetInterface *interface)
NCN26010 event handler.
bool_t ncn26010IrqHandler(NetInterface *interface)
NCN26010 interrupt service routine.
const NicDriver ncn26010Driver
NCN26010 driver.
uint32_t ncn26010ReadReg(NetInterface *interface, uint8_t mms, uint16_t address)
Read register.
void ncn26010Tick(NetInterface *interface)
NCN26010 timer handler.
void ncn26010DisableIrq(NetInterface *interface)
Disable interrupts.
void ncn26010WriteReg(NetInterface *interface, uint8_t mms, uint16_t address, uint32_t data)
Write register.
uint32_t ncn26010CalcParity(uint32_t data)
Calculate parity bit over a 32-bit data.
error_t ncn26010ReceivePacket(NetInterface *interface)
Receive a packet.
Network interface controller abstraction layer.
error_t ncn26010Init(NetInterface *interface)
NCN26010 controller initialization.
error_t ncn26010UpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
void ncn26010DumpReg(NetInterface *interface, uint8_t mms, uint16_t address, uint_t num)
Dump registers for debugging purpose.
void ncn26010InitHook(NetInterface *interface)
NCN26010 custom configuration.