1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #ifndef _IF_GEMREG_H
34 #define _IF_GEMREG_H
35
36
37
38
39
40
41
42
43 #define GEM_SEB_STATE 0x0000
44 #define GEM_CONFIG 0x0004
45 #define GEM_STATUS 0x000c
46
47 #define GEM_INTMASK 0x0010
48 #define GEM_INTACK 0x0014
49 #define GEM_STATUS_ALIAS 0x001c
50
51
52
53
54
55
56 #define GEM_PCI_BANK2_OFFSET 0x1000
57 #define GEM_PCI_BANK2_SIZE 0x14
58
59 #define GEM_ERROR_STATUS 0x0000
60 #define GEM_ERROR_MASK 0x0004
61 #define GEM_SBUS_CONFIG 0x0004
62 #define GEM_BIF_CONFIG 0x0008
63 #define GEM_BIF_DIAG 0x000c
64 #define GEM_RESET 0x0010
65
66
67 #define GEM_SEB_ARB 0x000000002
68 #define GEM_SEB_RXWON 0x000000004
69
70
71 #define GEM_SBUS_CFG_BMODE64 0x00000008
72 #define GEM_SBUS_CFG_PARITY 0x00000200
73
74
75 #define GEM_CONFIG_BURST_64 0x000000000
76 #define GEM_CONFIG_BURST_INF 0x000000001
77 #define GEM_CONFIG_TXDMA_LIMIT 0x00000003e
78 #define GEM_CONFIG_RXDMA_LIMIT 0x0000007c0
79
80 #define GEM_CONFIG_TXDMA_LIMIT_SHIFT 1
81 #define GEM_CONFIG_RXDMA_LIMIT_SHIFT 6
82
83
84 #define GEM_STATUS_TX_COMPL 0xfff800000
85
86
87
88
89
90 #define GEM_INTR_TX_INTME 0x000000001
91 #define GEM_INTR_TX_EMPTY 0x000000002
92 #define GEM_INTR_TX_DONE 0x000000004
93 #define GEM_INTR_RX_DONE 0x000000010
94 #define GEM_INTR_RX_NOBUF 0x000000020
95 #define GEM_INTR_RX_TAG_ERR 0x000000040
96 #define GEM_INTR_PCS 0x000002000
97 #define GEM_INTR_TX_MAC 0x000004000
98 #define GEM_INTR_RX_MAC 0x000008000
99 #define GEM_INTR_MAC_CONTROL 0x000010000
100 #define GEM_INTR_MIF 0x000020000
101 #define GEM_INTR_BERR 0x000040000
102 #define GEM_INTR_BITS "\020" \
103 "\1INTME\2TXEMPTY\3TXDONE" \
104 "\5RXDONE\6RXNOBUF\7RX_TAG_ERR" \
105 "\16PCS\17TXMAC\20RXMAC" \
106 "\21MACCONTROL\22MIF\23BERR"
107
108
109 #define GEM_ERROR_STAT_BADACK 0x000000001
110 #define GEM_ERROR_STAT_DTRTO 0x000000002
111 #define GEM_ERROR_STAT_OTHERS 0x000000004
112
113
114 #define GEM_BIF_CONFIG_SLOWCLK 0x000000001
115 #define GEM_BIF_CONFIG_HOST_64 0x000000002
116 #define GEM_BIF_CONFIG_B64D_DIS 0x000000004
117 #define GEM_BIF_CONFIG_M66EN 0x000000008
118
119
120 #define GEM_RESET_TX 0x000000001
121 #define GEM_RESET_RX 0x000000002
122 #define GEM_RESET_RSTOUT 0x000000004
123
124
125 #define GEM_TX_KICK 0x2000
126 #define GEM_TX_CONFIG 0x2004
127 #define GEM_TX_RING_PTR_LO 0x2008
128 #define GEM_TX_RING_PTR_HI 0x200c
129
130 #define GEM_TX_FIFO_WR_PTR 0x2014
131 #define GEM_TX_FIFO_SDWR_PTR 0x2018
132 #define GEM_TX_FIFO_RD_PTR 0x201c
133 #define GEM_TX_FIFO_SDRD_PTR 0x2020
134 #define GEM_TX_FIFO_PKT_CNT 0x2024
135
136 #define GEM_TX_STATE_MACHINE 0x2028
137 #define GEM_TX_DATA_PTR 0x2030
138
139 #define GEM_TX_COMPLETION 0x2100
140 #define GEM_TX_FIFO_ADDRESS 0x2104
141 #define GEM_TX_FIFO_TAG 0x2108
142 #define GEM_TX_FIFO_DATA_LO 0x210c
143 #define GEM_TX_FIFO_DATA_HI_T1 0x2110
144 #define GEM_TX_FIFO_DATA_HI_T0 0x2114
145 #define GEM_TX_FIFO_SIZE 0x2118
146 #define GEM_TX_DEBUG 0x3028
147
148
149 #define GEM_TX_CONFIG_TXDMA_EN 0x00000001
150 #define GEM_TX_CONFIG_TXRING_SZ 0x0000001e
151 #define GEM_TX_CONFIG_TXFIFO_TH 0x001ffc00
152 #define GEM_TX_CONFIG_PACED 0x00200000
153
154 #define GEM_RING_SZ_32 (0<<1)
155 #define GEM_RING_SZ_64 (1<<1)
156 #define GEM_RING_SZ_128 (2<<1)
157 #define GEM_RING_SZ_256 (3<<1)
158 #define GEM_RING_SZ_512 (4<<1)
159 #define GEM_RING_SZ_1024 (5<<1)
160 #define GEM_RING_SZ_2048 (6<<1)
161 #define GEM_RING_SZ_4096 (7<<1)
162 #define GEM_RING_SZ_8192 (8<<1)
163
164
165 #define GEM_TX_COMPLETION_MASK 0x00001fff
166
167
168 #define GEM_RX_CONFIG 0x4000
169 #define GEM_RX_RING_PTR_LO 0x4004
170 #define GEM_RX_RING_PTR_HI 0x4008
171
172 #define GEM_RX_FIFO_WR_PTR 0x400c
173 #define GEM_RX_FIFO_SDWR_PTR 0x4010
174 #define GEM_RX_FIFO_RD_PTR 0x4014
175 #define GEM_RX_FIFO_PKT_CNT 0x4018
176
177 #define GEM_RX_STATE_MACHINE 0x401c
178 #define GEM_RX_PAUSE_THRESH 0x4020
179
180 #define GEM_RX_DATA_PTR_LO 0x4024
181 #define GEM_RX_DATA_PTR_HI 0x4028
182
183 #define GEM_RX_KICK 0x4100
184 #define GEM_RX_COMPLETION 0x4104
185 #define GEM_RX_BLANKING 0x4108
186
187 #define GEM_RX_FIFO_ADDRESS 0x410c
188 #define GEM_RX_FIFO_TAG 0x4110
189 #define GEM_RX_FIFO_DATA_LO 0x4114
190 #define GEM_RX_FIFO_DATA_HI_T1 0x4118
191 #define GEM_RX_FIFO_DATA_HI_T0 0x411c
192 #define GEM_RX_FIFO_SIZE 0x4120
193
194
195 #define GEM_RX_CONFIG_RXDMA_EN 0x00000001
196 #define GEM_RX_CONFIG_RXRING_SZ 0x0000001e
197 #define GEM_RX_CONFIG_BATCH_DIS 0x00000020
198 #define GEM_RX_CONFIG_FBOFF 0x00001c00
199 #define GEM_RX_CONFIG_CXM_START 0x000fe000
200 #define GEM_RX_CONFIG_FIFO_THRS 0x07000000
201
202 #define GEM_THRSH_64 0
203 #define GEM_THRSH_128 1
204 #define GEM_THRSH_256 2
205 #define GEM_THRSH_512 3
206 #define GEM_THRSH_1024 4
207 #define GEM_THRSH_2048 5
208
209 #define GEM_RX_CONFIG_FIFO_THRS_SHIFT 24
210 #define GEM_RX_CONFIG_FBOFF_SHFT 10
211 #define GEM_RX_CONFIG_CXM_START_SHFT 13
212
213
214 #define GEM_RX_PTH_XOFF_THRESH 0x000001ff
215 #define GEM_RX_PTH_XON_THRESH 0x07fc0000
216
217
218 #define GEM_RX_BLANKING_PACKETS 0x000001ff
219 #define GEM_RX_BLANKING_TIME 0x03fc0000
220
221
222
223 #define GEM_MAC_TXRESET 0x6000
224 #define GEM_MAC_RXRESET 0x6004
225 #define GEM_MAC_SEND_PAUSE_CMD 0x6008
226 #define GEM_MAC_TX_STATUS 0x6010
227 #define GEM_MAC_RX_STATUS 0x6014
228 #define GEM_MAC_CONTROL_STATUS 0x6018
229 #define GEM_MAC_TX_MASK 0x6020
230 #define GEM_MAC_RX_MASK 0x6024
231 #define GEM_MAC_CONTROL_MASK 0x6028
232 #define GEM_MAC_TX_CONFIG 0x6030
233 #define GEM_MAC_RX_CONFIG 0x6034
234 #define GEM_MAC_CONTROL_CONFIG 0x6038
235 #define GEM_MAC_XIF_CONFIG 0x603c
236 #define GEM_MAC_IPG0 0x6040
237 #define GEM_MAC_IPG1 0x6044
238 #define GEM_MAC_IPG2 0x6048
239 #define GEM_MAC_SLOT_TIME 0x604c
240 #define GEM_MAC_MAC_MIN_FRAME 0x6050
241 #define GEM_MAC_MAC_MAX_FRAME 0x6054
242 #define GEM_MAC_PREAMBLE_LEN 0x6058
243 #define GEM_MAC_JAM_SIZE 0x605c
244 #define GEM_MAC_ATTEMPT_LIMIT 0x6060
245 #define GEM_MAC_CONTROL_TYPE 0x6064
246
247 #define GEM_MAC_ADDR0 0x6080
248 #define GEM_MAC_ADDR1 0x6084
249 #define GEM_MAC_ADDR2 0x6088
250 #define GEM_MAC_ADDR3 0x608c
251 #define GEM_MAC_ADDR4 0x6090
252 #define GEM_MAC_ADDR5 0x6094
253 #define GEM_MAC_ADDR6 0x6098
254 #define GEM_MAC_ADDR7 0x609c
255 #define GEM_MAC_ADDR8 0x60a0
256
257 #define GEM_MAC_ADDR_FILTER0 0x60a4
258 #define GEM_MAC_ADDR_FILTER1 0x60a8
259 #define GEM_MAC_ADDR_FILTER2 0x60ac
260 #define GEM_MAC_ADR_FLT_MASK1_2 0x60b0
261 #define GEM_MAC_ADR_FLT_MASK0 0x60b4
262
263 #define GEM_MAC_HASH0 0x60c0
264 #define GEM_MAC_HASH1 0x60c4
265 #define GEM_MAC_HASH2 0x60c8
266 #define GEM_MAC_HASH3 0x60cc
267 #define GEM_MAC_HASH4 0x60d0
268 #define GEM_MAC_HASH5 0x60d4
269 #define GEM_MAC_HASH6 0x60d8
270 #define GEM_MAC_HASH7 0x60dc
271 #define GEM_MAC_HASH8 0x60e0
272 #define GEM_MAC_HASH9 0x60e4
273 #define GEM_MAC_HASH10 0x60e8
274 #define GEM_MAC_HASH11 0x60ec
275 #define GEM_MAC_HASH12 0x60f0
276 #define GEM_MAC_HASH13 0x60f4
277 #define GEM_MAC_HASH14 0x60f8
278 #define GEM_MAC_HASH15 0x60fc
279
280 #define GEM_MAC_NORM_COLL_CNT 0x6100
281 #define GEM_MAC_FIRST_COLL_CNT 0x6104
282 #define GEM_MAC_EXCESS_COLL_CNT 0x6108
283 #define GEM_MAC_LATE_COLL_CNT 0x610c
284 #define GEM_MAC_DEFER_TMR_CNT 0x6110
285 #define GEM_MAC_PEAK_ATTEMPTS 0x6114
286 #define GEM_MAC_RX_FRAME_COUNT 0x6118
287 #define GEM_MAC_RX_LEN_ERR_CNT 0x611c
288 #define GEM_MAC_RX_ALIGN_ERR 0x6120
289 #define GEM_MAC_RX_CRC_ERR_CNT 0x6124
290 #define GEM_MAC_RX_CODE_VIOL 0x6128
291 #define GEM_MAC_RANDOM_SEED 0x6130
292 #define GEM_MAC_MAC_STATE 0x6134
293
294
295 #define GEM_MAC_PAUSE_CMD_TIME 0x0000ffff
296 #define GEM_MAC_PAUSE_CMD_SEND 0x00010000
297
298
299 #define GEM_MAC_TX_XMIT_DONE 0x00000001
300 #define GEM_MAC_TX_UNDERRUN 0x00000002
301 #define GEM_MAC_TX_PKT_TOO_LONG 0x00000004
302 #define GEM_MAC_TX_NCC_EXP 0x00000008
303 #define GEM_MAC_TX_ECC_EXP 0x00000010
304 #define GEM_MAC_TX_LCC_EXP 0x00000020
305 #define GEM_MAC_TX_FCC_EXP 0x00000040
306 #define GEM_MAC_TX_DEFER_EXP 0x00000080
307 #define GEM_MAC_TX_PEAK_EXP 0x00000100
308
309
310 #define GEM_MAC_RX_DONE 0x00000001
311 #define GEM_MAC_RX_OVERFLOW 0x00000002
312 #define GEM_MAC_RX_FRAME_CNT 0x00000004
313 #define GEM_MAC_RX_ALIGN_EXP 0x00000008
314 #define GEM_MAC_RX_CRC_EXP 0x00000010
315 #define GEM_MAC_RX_LEN_EXP 0x00000020
316 #define GEM_MAC_RX_CVI_EXP 0x00000040
317
318
319 #define GEM_MAC_PAUSED 0x00000001
320 #define GEM_MAC_PAUSE 0x00000002
321 #define GEM_MAC_RESUME 0x00000004
322 #define GEM_MAC_PAUSE_TIME 0xffff0000
323
324
325 #define GEM_MAC_XIF_TX_MII_ENA 0x00000001
326 #define GEM_MAC_XIF_MII_LOOPBK 0x00000002
327 #define GEM_MAC_XIF_ECHO_DISABL 0x00000004
328 #define GEM_MAC_XIF_GMII_MODE 0x00000008
329 #define GEM_MAC_XIF_MII_BUF_ENA 0x00000010
330 #define GEM_MAC_XIF_LINK_LED 0x00000020
331 #define GEM_MAC_XIF_FDPLX_LED 0x00000040
332
333
334 #define GEM_MAC_SLOT_INT 0x40
335 #define GEM_MAC_SLOT_EXT 0x200
336
337
338 #define GEM_MAC_TX_ENABLE 0x00000001
339 #define GEM_MAC_TX_IGN_CARRIER 0x00000002
340 #define GEM_MAC_TX_IGN_COLLIS 0x00000004
341 #define GEM_MAC_TX_ENA_IPG0 0x00000008
342 #define GEM_MAC_TX_NGU 0x00000010
343 #define GEM_MAC_TX_NGU_LIMIT 0x00000020
344 #define GEM_MAC_TX_NO_BACKOFF 0x00000040
345 #define GEM_MAC_TX_SLOWDOWN 0x00000080
346 #define GEM_MAC_TX_NO_FCS 0x00000100
347 #define GEM_MAC_TX_CARR_EXTEND 0x00000200
348
349
350
351 #define GEM_MAC_RX_ENABLE 0x00000001
352 #define GEM_MAC_RX_STRIP_PAD 0x00000002
353 #define GEM_MAC_RX_STRIP_CRC 0x00000004
354 #define GEM_MAC_RX_PROMISCUOUS 0x00000008
355 #define GEM_MAC_RX_PROMISC_GRP 0x00000010
356 #define GEM_MAC_RX_HASH_FILTER 0x00000020
357 #define GEM_MAC_RX_ADDR_FILTER 0x00000040
358 #define GEM_MAC_RX_ERRCHK_DIS 0x00000080
359 #define GEM_MAC_RX_CARR_EXTEND 0x00000100
360
361
362
363
364
365
366 #define GEM_MAC_CC_TX_PAUSE 0x00000001
367 #define GEM_MAC_CC_RX_PAUSE 0x00000002
368 #define GEM_MAC_CC_PASS_PAUSE 0x00000004
369
370
371
372 #define GEM_MIF_BB_CLOCK 0x6200
373 #define GEM_MIF_BB_DATA 0x6204
374 #define GEM_MIF_BB_OUTPUT_ENAB 0x6208
375 #define GEM_MIF_FRAME 0x620c
376 #define GEM_MIF_CONFIG 0x6210
377 #define GEM_MIF_INTERRUPT_MASK 0x6214
378 #define GEM_MIF_BASIC_STATUS 0x6218
379 #define GEM_MIF_STATE_MACHINE 0x621c
380
381
382 #define GEM_MIF_FRAME_DATA 0x0000ffff
383 #define GEM_MIF_FRAME_TA0 0x00010000
384 #define GEM_MIF_FRAME_TA1 0x00020000
385 #define GEM_MIF_FRAME_REG_ADDR 0x007c0000
386 #define GEM_MIF_FRAME_PHY_ADDR 0x0f800000
387 #define GEM_MIF_FRAME_OP 0x30000000
388 #define GEM_MIF_FRAME_START 0xc0000000
389
390 #define GEM_MIF_FRAME_READ 0x60020000
391 #define GEM_MIF_FRAME_WRITE 0x50020000
392
393 #define GEM_MIF_REG_SHIFT 18
394 #define GEM_MIF_PHY_SHIFT 23
395
396
397 #define GEM_MIF_CONFIG_PHY_SEL 0x00000001
398 #define GEM_MIF_CONFIG_POLL_ENA 0x00000002
399 #define GEM_MIF_CONFIG_BB_ENA 0x00000004
400 #define GEM_MIF_CONFIG_REG_ADR 0x000000f8
401 #define GEM_MIF_CONFIG_MDI0 0x00000100
402 #define GEM_MIF_CONFIG_MDI1 0x00000200
403 #define GEM_MIF_CONFIG_PHY_ADR 0x00007c00
404
405
406
407 #define GEM_MIF_STATUS 0x0000ffff
408 #define GEM_MIF_BASIC 0xffff0000
409
410
411
412
413
414
415
416
417
418 #define GEM_MII_CONTROL 0x9000
419 #define GEM_MII_STATUS 0x9004
420 #define GEM_MII_ANAR 0x9008
421 #define GEM_MII_ANLPAR 0x900c
422 #define GEM_MII_CONFIG 0x9010
423 #define GEM_MII_STATE_MACHINE 0x9014
424 #define GEM_MII_INTERRUP_STATUS 0x9018
425 #define GEM_MII_DATAPATH_MODE 0x9050
426 #define GEM_MII_SLINK_CONTROL 0x9054
427 #define GEM_MII_OUTPUT_SELECT 0x9058
428 #define GEM_MII_SLINK_STATUS 0x905c
429
430
431
432
433
434 #define GEM_MII_CONTROL_RESET 0x00008000
435 #define GEM_MII_CONTROL_LOOPBK 0x00004000
436 #define GEM_MII_CONTROL_1000M 0x00002000
437 #define GEM_MII_CONTROL_AUTONEG 0x00001000
438 #define GEM_MII_CONTROL_POWERDN 0x00000800
439 #define GEM_MII_CONTROL_ISOLATE 0x00000400
440 #define GEM_MII_CONTROL_RAN 0x00000200
441 #define GEM_MII_CONTROL_FDUPLEX 0x00000100
442 #define GEM_MII_CONTROL_COL_TST 0x00000080
443
444
445 #define GEM_MII_STATUS_GB_FDX 0x00000400
446 #define GEM_MII_STATUS_GB_HDX 0x00000200
447 #define GEM_MII_STATUS_UNK 0x00000100
448 #define GEM_MII_STATUS_ANEG_CPT 0x00000020
449 #define GEM_MII_STATUS_REM_FLT 0x00000010
450 #define GEM_MII_STATUS_ACFG 0x00000008
451 #define GEM_MII_STATUS_LINK_STS 0x00000004
452 #define GEM_MII_STATUS_JABBER 0x00000002
453 #define GEM_MII_STATUS_EXTCAP 0x00000001
454
455
456 #define GEM_MII_ANEG_NP 0x00008000
457 #define GEM_MII_ANEG_ACK 0x00004000
458
459 #define GEM_MII_ANEG_RF 0x00003000
460 #define GEM_MII_ANEG_ASYM_PAUSE 0x00000100
461 #define GEM_MII_ANEG_SYM_PAUSE 0x00000080
462 #define GEM_MII_ANEG_HLF_DUPLX 0x00000040
463 #define GEM_MII_ANEG_FUL_DUPLX 0x00000020
464
465
466 #define GEM_MII_CONFIG_TIMER 0x0000000e
467 #define GEM_MII_CONFIG_ANTO 0x00000020
468 #define GEM_MII_CONFIG_JS 0x00000018
469
470 #define GEM_MII_CONFIG_SDL 0x00000004
471 #define GEM_MII_CONFIG_SDO 0x00000002
472 #define GEM_MII_CONFIG_ENABLE 0x00000001
473
474
475
476
477
478 #define GEM_MII_FSM_STOP 0x00000000
479 #define GEM_MII_FSM_RUN 0x00000001
480 #define GEM_MII_FSM_UNKWN 0x00000100
481 #define GEM_MII_FSM_DONE 0x00000101
482
483
484
485
486
487 #define GEM_MII_INTERRUP_LINK 0x00000002
488
489
490 #define GEM_MII_DATAPATH_SERIAL 0x00000001
491 #define GEM_MII_DATAPATH_SERDES 0x00000002
492 #define GEM_MII_DATAPATH_MII 0x00000004
493 #define GEM_MII_DATAPATH_MIIOUT 0x00000008
494
495
496 #define GEM_MII_SLINK_LOOPBACK 0x00000001
497
498 #define GEM_MII_SLINK_EN_SYNC_D 0x00000002
499 #define GEM_MII_SLINK_LOCK_REF 0x00000004
500 #define GEM_MII_SLINK_EMPHASIS 0x00000008
501 #define GEM_MII_SLINK_SELFTEST 0x000001c0
502 #define GEM_MII_SLINK_POWER_OFF 0x00000200
503
504
505 #define GEM_MII_SLINK_TEST 0x00000000
506 #define GEM_MII_SLINK_LOCKED 0x00000001
507 #define GEM_MII_SLINK_COMMA 0x00000002
508 #define GEM_MII_SLINK_SYNC 0x00000003
509
510
511 #define GEM_PHYAD_INTERNAL 1
512 #define GEM_PHYAD_EXTERNAL 0
513
514
515
516
517 struct gem_desc {
518 uint64_t gd_flags;
519 uint64_t gd_addr;
520 };
521
522
523 #define GEM_TD_BUFSIZE 0x0000000000007fffLL
524 #define GEM_TD_CXSUM_START 0x00000000001f8000LL
525 #define GEM_TD_CXSUM_STARTSHFT 15
526 #define GEM_TD_CXSUM_STUFF 0x000000001fe00000LL
527 #define GEM_TD_CXSUM_STUFFSHFT 21
528 #define GEM_TD_CXSUM_ENABLE 0x0000000020000000LL
529 #define GEM_TD_END_OF_PACKET 0x0000000040000000LL
530 #define GEM_TD_START_OF_PACKET 0x0000000080000000LL
531 #define GEM_TD_INTERRUPT_ME 0x0000000100000000LL
532 #define GEM_TD_NO_CRC 0x0000000200000000LL
533
534
535
536
537
538
539 #define GEM_RD_CHECKSUM 0x000000000000ffffLL
540 #define GEM_RD_BUFSIZE 0x000000007fff0000LL
541 #define GEM_RD_OWN 0x0000000080000000LL
542 #define GEM_RD_HASHVAL 0x0ffff00000000000LL
543 #define GEM_RD_HASH_PASS 0x1000000000000000LL
544 #define GEM_RD_ALTERNATE_MAC 0x2000000000000000LL
545 #define GEM_RD_BAD_CRC 0x4000000000000000LL
546
547 #define GEM_RD_BUFSHIFT 16
548 #define GEM_RD_BUFLEN(x) (((x)&GEM_RD_BUFSIZE)>>GEM_RD_BUFSHIFT)
549
550 #endif