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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
|
/* $NetBSD: etsecreg.h,v 1.10 2022/05/11 14:58:00 andvar Exp $ */
/*-
* Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Raytheon BBN Technologies Corp and Defense Advanced Research Projects
* Agency and which was developed by Matt Thomas of 3am Software Foundry.
*
* This material is based upon work supported by the Defense Advanced Research
* Projects Agency and Space and Naval Warfare Systems Center, Pacific, under
* Contract No. N66001-09-C-2073.
* Approved for Public Release, Distribution Unlimited
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _POWERPC_BOOKE_ETSEC_REG_H_
#define _POWERPC_BOOKE_ETSEC_REG_H_
#define TXBD_R 0x8000 /* Ready (HW Owned) */
#define TXBD_PADCRC 0x4000 /* B: Pad+CRC */
#define TXBD_W 0x2000 /* B: Wrap (End of Ring) */
#define TXBD_I 0x1000 /* B: Interrupt (IEVENT[TXB|TXF]) */
#define TXBD_L 0x0800 /* B: Last */
#define TXBD_TC 0x0400 /* B: Tx CRC. (Add CRC) */
#define TXBD_PRE 0x0200 /* B: custom preamble */
#define TXBD_DEF TXBD_PRE /* A: transmit deferred */
#define TXBD_HFE 0x0080 /* B: Huge Frame Enable */
#define TXBD_LC TXBD_HFE /* A: Late Coll */
#define TXBD_CF 0x0040 /* B: Control Frame */
#define TXBD_RL TXBD_CF /* A: Tx Limit */
#define TXBD_RC 0x003c /* A: Retry Count */
#define TXBD_TOE 0x0002 /* B: TOE frame */
#define TXBD_UN TXBD_TOE /* A: Underrun */
#define TXBD_TR 0x0001 /* A: Truncation */
#define TXBD_ERRORS (TXBD_LC|TXBD_RL|TXBD_UN|TXBD_TR)
struct txbd {
uint16_t txbd_flags;
uint16_t txbd_len;
uint32_t txbd_bufptr;
};
#define TXFCB_VLN 0x8000 /* VLaN control word valid */
#define TXFCB_IP 0x4000 /* Layer 3 header is an IP header */
#define TXFCB_IP6 0x2000 /* IP Header is IPv6 */
#define TXFCB_TUP 0x1000 /* Layer 4 is TCP or UDP */
#define TXFCB_UDP 0x0800 /* UDP at layer 4 */
#define TXFCB_CIP 0x0400 /* Checksum IP header enable */
#define TXFCB_CTU 0x0200 /* Checksum TCP or UCP header enable */
#define TXFCB_NPH 0x0100 /* No std Pseudo-Header checksum, use phcs */
struct txfcb {
uint16_t txfcb_flags;
uint8_t txfcb_l4os; /* layer 4 hdr from start of layer 3 header */
uint8_t txfcb_l3os; /* layer 3 hdr from start of layer 2 header */
uint16_t txfcb_phcs; /* pseudo-header checksum for NPH */
uint16_t txfcb_vlctl; /* vlan control word for insertion for VLN */
};
#define RXBD_E 0x8000 /* Empty (1 = Owned by ETSEC) */
#define RXBD_RO1 0x4000 /* S/W Ownership */
#define RXBD_W 0x2000 /* Wrap ring. */
#define RXBD_I 0x1000 /* Interrupt IEVENT[RXB|RXF] */
#define RXBD_L 0x0800 /* Last in frame */
#define RXBD_F 0x0400 /* First in frame */
#define RXBD_M 0x0100 /* Miss (promiscuous match) */
#define RXBD_BC 0x0080 /* BroadCast match */
#define RXBD_MC 0x0040 /* MultiCast match */
#define RXBD_LG 0x0020 /* rx LarGe frame error */
#define RXBD_NO 0x0010 /* Non-octet aligned frame error */
#define RXBD_SH 0x0008 /* SHort frame */
#define RXBD_CR 0x0004 /* rx CRc error */
#define RXBD_OV 0x0002 /* OVerrun error */
#define RXBD_TR 0x0001 /* TRuncation error */
#define RXBD_ERRORS 0x003f
struct rxbd {
uint16_t rxbd_flags;
uint16_t rxbd_len;
uint32_t rxbd_bufptr;
};
#define RXFCB_VLN 0x8000 /* VLaN tag recognized */
#define RXFCB_IP 0x4000 /* IP header found at layer 3 */
#define RXFCB_IP6 0x2000 /* IPv6 header found */
#define RXFCB_TUP 0x1000 /* TCP or UDP header found */
#define RXFCB_CIP 0x0800 /* IPv4 checksum performed */
#define RXFCB_CTU 0x0400 /* TCP or UDP checksum checked */
#define RXFCB_EIP 0x0200 /* IPv4 header checksum error */
#define RXFCB_ETU 0x0100 /* TCP or UDP header checksum error */
#define RXFCB_HASH_VAL 0x0010 /* FLR_HASH value is valid */
#define RXFCB_PERR 0x000c /* Parse Error */
#define RXFCB_PERR_L3 0x0008 /* L3 Parse Error */
struct rxfcb {
uint16_t rxfcb_flags;
uint8_t rxfcb_rq; /* receive queue index */
uint8_t rxfcb_pro; /* IP Protocol received */
uint16_t rxfcb_flr_hash; /* filer hash value */
uint16_t rxfcb_vlctl; /* VLAN control field */
};
/* 0x000-0x0ff eTSEC general control/status registers */
#define TSEC_ID 0x000 /* Controller ID register */
#define TSEC_ID2 0x004 /* Controller ID register */
#define IEVENT 0x010 /* Interrupt event register */
#define IEVENT_BABR __PPCBIT(0) /* babbling receive error */
#define IEVENT_RXC __PPCBIT(1) /* receive control interrupt */
#define IEVENT_BSY __PPCBIT(2) /* busy condition interrupt */
#define IEVENT_EBERR __PPCBIT(3) /* internal bus error */
#define IEVENT_MSR0 __PPCBIT(5) /* MIB counter overflow */
#define IEVENT_GTSC __PPCBIT(6) /* graceful transmit stop complete */
#define IEVENT_BABT __PPCBIT(7) /* babbing transmit error */
#define IEVENT_TXC __PPCBIT(8) /* transmit control interrupt */
#define IEVENT_TXE __PPCBIT(9) /* transmit error */
#define IEVENT_TXB __PPCBIT(10) /* transmit buffer */
#define IEVENT_TXF __PPCBIT(11) /* transmit frame interrupt */
#define IEVENT_LC __PPCBIT(13) /* late collision */
#define IEVENT_CRL __PPCBIT(14) /* collision retry limit */
#define IEVENT_XFUN __PPCBIT(15) /* transmit fifo underrun */
#define IEVENT_RXB __PPCBIT(16) /* receive buffer */
#define IEVENT_TWK __PPCBIT(19) /* timer wakeup */
#define IEVENT_MAG __PPCBIT(20) /* magic packet detected */
#define IEVENT_MMRD __PPCBIT(21) /* MMI management read complete */
#define IEVENT_MMWR __PPCBIT(22) /* MMI management write complete */
#define IEVENT_GRSC __PPCBIT(23) /* graceful receive stop complete */
#define IEVENT_RXF __PPCBIT(24) /* receive frame interrupt */
#define IEVENT_FGPI __PPCBIT(27) /* filer generated general purpose interrupt */
#define IEVENT_FIR __PPCBIT(28) /* receive queue filer is invalid */
#define IEVENT_FIQ __PPCBIT(29) /* filed frame to invalid receive queue */
#define IEVENT_DPE __PPCBIT(30) /* internal data parity error */
#define IEVENT_PERR __PPCBIT(31) /* Receive parse error for TOE */
#define IMASK 0x014 /* Interrupt mask register */
#define EDIS 0x018 /* error disabled register */
#define EMAPG 0x01c /* group error mapping register */
#define ECNTRL 0x020 /* ethernet control register */
#define ECNTRL_FIFM __PPCBIT(16) /* FIFO mode enable */
#define ECNTRL_CLRCNT __PPCBIT(17) /* Clear all MIB counters */
#define ECNTRL_AUTOZ __PPCBIT(18) /* Auto zero MIB counter on read */
#define ECNTRL_STEN __PPCBIT(19) /* MIB Statistics Enabled */
#define ECNTRL_GMIIM __PPCBIT(25) /* GMII Interface Mode */
#define ECNTRL_TBIM __PPCBIT(26) /* Ten-Bit Interface Mode */
#define ECNTRL_RPM __PPCBIT(27) /* Reduced Pin Mode */
#define ECNTRL_R100M __PPCBIT(28) /* RGMII/RMII 100 Mode */
#define ECNTRL_RMM __PPCBIT(29) /* Reduced Pin Mode for 10/100 */
#define ECNTRL_SGMIIM __PPCBIT(30) /* SGMII Interface Mode */
#define ECNTRL_DEFAULT ECNTRL_STEN
#define PTV 0x028 /* Pause time value register */
#define DMACTRL 0x02c /* DMA control register */
#define DMACTRL_LE __PPCBIT(16) /* Little Endian Descriptor Mode */
#define DMACTRL_TDSEN __PPCBIT(24) /* TX Data Snoop enable */
#define DMACTRL_TBDSEN __PPCBIT(25) /* TxBD Data Snoop enable */
#define DMACTRL_GRS __PPCBIT(27) /* graceful receive stop */
#define DMACTRL_GTS __PPCBIT(28) /* graceful transmit stop */
#define DMACTRL_TOD __PPCBIT(29) /* Transmi On Demand for TxBD ring 0 */
#define DMACTRL_WWR __PPCBIT(30) /* Write With Response */
#define DMACTRL_WOP __PPCBIT(31) /* Wait or pool for TxBD ring 0 */
#define DMACTRL_DEFAULT (DMACTRL_WOP|DMACTRL_WWR|DMACTRL_TDSEN|DMACTRL_TBDSEN)
#define TBIPA 0x030 /* TBI phy address register */
/* 0x100-0x2ff eTSEC transmit control/status registers */
#define TCTRL 0x100 /* Transmit control register */
#define TCTRL_IPCSEN __PPCBIT(17) /* IP header checksum generation enable */
#define TCTRL_TUCSEN __PPCBIT(18) /* TCP/UDP header checksum generation enable */
#define TCTRL_VLINS __PPCBIT(19) /* VLAN tag insertion */
#define TCTRL_THDF __PPCBIT(29) /* Transmit half duplex */
#define TCTRL_RFC_PAUSE __PPCBIT(27) /* receive flow control pause frame */
#define TCTRL_TFC_PAUSE __PPCBIT(28) /* transmit flow control pause frame */
#define TCTRL_TXSCHED __PPCBITS(29,30) /* transmit ring scheduling algorithm */
#define TCTRL_TXSCHED_SINGLE __SHIFTIN(0,TCTRL_TXSCHED)
#define TCTRL_TXSCHED_PRIO __SHIFTIN(1,TCTRL_TXSCHED)
#define TCTRL_TXSCHED_MWRR __SHIFTIN(2,TCTRL_TXSCHED)
#define TSTAT 0x104 /* Transmit status register */
#define TSTAT_THLT0 __PPCBIT(0) /* transmit halt of ring 0 */
#define TSTAT_THLT1 __PPCBIT(1)
#define TSTAT_THLT2 __PPCBIT(2)
#define TSTAT_THLT3 __PPCBIT(3)
#define TSTAT_THLT4 __PPCBIT(4)
#define TSTAT_THLT5 __PPCBIT(5)
#define TSTAT_THLT6 __PPCBIT(6)
#define TSTAT_THLT7 __PPCBIT(7)
#define TSTAT_THLTn(n) (TSTAT_THLT0 >> (n))
#define TSTAT_THLT __PPCBITS(0,7)
#define TSTAT_TXF0 __PPCBIT(16) /* transmit frame event occurred on ring 0 */
#define TSTAT_TXF1 __PPCBIT(17)
#define TSTAT_TXF2 __PPCBIT(18)
#define TSTAT_TXF3 __PPCBIT(19)
#define TSTAT_TXF4 __PPCBIT(20)
#define TSTAT_TXF5 __PPCBIT(21)
#define TSTAT_TXF6 __PPCBIT(22)
#define TSTAT_TXF7 __PPCBIT(23)
#define TSTAT_TXF __PPCBITS(16,23)
#define TSTAT_TXFn(n) (TSTAT_TXF0 >> (n))
#define DFVLAN 0x108 /* Default VLAN control word [TSEC3] */
#define TXIC 0x110 /* Transmit interrupt coalescing register */
#define TXIC_ICEN __PPCBIT(0) /* Interrupt coalescing enable */
#define TXIC_ICCS __PPCBIT(1) /* Interrupt coalescing timer clock source */
#define TXIC_ICCS_ETSEC 0 /* eTSEC Tx interface clocks */
#define TXIC_ICCS_SYSTEM TXIC_ICCS /* system clocks */
#define TXIC_ICFT __PPCBITS(3,10)
#define TXIC_ICFT_SET(n) __SHIFTIN((n),TXIC_ICFT)
#define TXIC_ICTT __PPCBITS(16,31)
#define TXIC_ICTT_SET(n) __SHIFTIN((n),TXIC_ICTT)
#define TQUEUE 0x114 /* Transmit queue control register [TSEC3] */
#define TQUEUE_EN0 __PPCBIT(16) /* transmit ring enabled */
#define TQUEUE_EN1 __PPCBIT(17)
#define TQUEUE_EN2 __PPCBIT(18)
#define TQUEUE_EN3 __PPCBIT(19)
#define TQUEUE_EN4 __PPCBIT(20)
#define TQUEUE_EN5 __PPCBIT(21)
#define TQUEUE_EN6 __PPCBIT(22)
#define TQUEUE_EN7 __PPCBIT(23)
#define TQUEUE_EN __PPCBITS(16,23)
#define TQUEUE_ENn(n) (TQUEUE_EN0 >> (n))
#define TR03WT 0x140 /* TxBD Rings 0-3 round-robin weightings [TSEC3] */
#define TR47WT 0x144 /* TxBD Rings 4-7 round-robin weightings [TSEC3] */
#define TBDBPH 0x180 /* Tx data buffer pointer high bits [TSEC3] */
#define TBPTR0 0x184 /* TxBD pointer for ring 0 */
#define TBPTR1 0x18C /* TxBD pointer for ring 1 [TSEC3] */
#define TBPTR2 0x194 /* TxBD pointer for ring 2 [TSEC3] */
#define TBPTR3 0x19C /* TxBD pointer for ring 3 [TSEC3] */
#define TBPTR4 0x1A4 /* TxBD pointer for ring 4 [TSEC3] */
#define TBPTR5 0x1AC /* TxBD pointer for ring 5 [TSEC3] */
#define TBPTR6 0x1B4 /* TxBD pointer for ring 6 [TSEC3] */
#define TBPTR7 0x1BC /* TxBD pointer for ring 7 [TSEC3] */
#define TBPTRn(n) (TBPTR0 + 8*(n))
#define TBASEH 0x200 /* TxBD base address high bits [TSEC3] */
#define TBASE0 0x204 /* TxBD base address of ring 0 */
#define TBASE1 0x20C /* TxBD base address of ring 1 [TSEC3] */
#define TBASE2 0x214 /* TxBD base address of ring 2 [TSEC3] */
#define TBASE3 0x21C /* TxBD base address of ring 3 [TSEC3] */
#define TBASE4 0x224 /* TxBD base address of ring 4 [TSEC3] */
#define TBASE5 0x22C /* TxBD base address of ring 5 [TSEC3] */
#define TBASE6 0x234 /* TxBD base address of ring 6 [TSEC3] */
#define TBASE7 0x23C /* TxBD base address of ring 7 [TSEC3] */
#define TBASEn(n) (TBASE0 + 8*(n))
#define TMR_TXTS1_ID 0x280 /* Tx time stamp identification tag (set 1) [TSEC3] */
#define TMR_TXTS2_ID 0x284 /* Tx time stamp identification tag (set 2) [TSEC3] */
#define TMR_TXTS1_H 0x2C0 /* Tx time stamp high (set 1) [TSEC3] */
#define TMR_TXTS1_L 0x2C4 /* Tx time stamp high (set 1) [TSEC3] */
#define TMR_TXTS2_H 0x2C8 /* Tx time stamp high (set 2) [TSEC3] */
#define TMR_TXTS2_L 0x2CC /* Tx time stamp high (set 2) [TSEC3] */
/* 0x300-0x4ff eTSEC receive control/status registers */
#define RCTRL 0x300 /* Receive control register */
#define RCTRL_L2OFF __PPCBITS(0,6)
#define RCTRL_L2OFF_SET(n) __SHIFTIN((n),RCTRL_L2OFF)
#define RCTRL_TS __PPCBIT(7)
#define RCTRL_RR __PPCBIT(10)
#define RCTRL_PAL __PPCBITS(11,15)
#define RCTRL_VLEX __PPCBIT(18)
#define RCTRL_FILREN __PPCBIT(19)
#define RCTRL_FSQEN __PPCBIT(20)
#define RCTRL_GHTX __PPCBIT(21)
#define RCTRL_IPCSEN __PPCBIT(22)
#define RCTRL_TUCSEN __PPCBIT(23)
#define RCTRL_PRSDEP __PPCBITS(24,25)
#define RCTRL_PRSDEP_L4 __SHIFTIN(3,RCTRL_PRSDEP)
#define RCTRL_PRSDEP_L3 __SHIFTIN(2,RCTRL_PRSDEP)
#define RCTRL_PRSDEP_L2 __SHIFTIN(1,RCTRL_PRSDEP)
#define RCTRL_PRSDEP_OFF __SHIFTIN(0,RCTRL_PRSDEP)
#define RCTRL_BC_REJ __PPCBIT(27)
#define RCTRL_PROM __PPCBIT(28)
#define RCTRL_RSF __PPCBIT(29)
#define RCTRL_EMEN __PPCBIT(30)
#define RCTRL_DEFAULT (__SHIFTIN(2, RCTRL_PAL)|RCTRL_EMEN)
#define RSTAT 0x304 /* Receive status register */
#define RSTAT_QHLT0 __PPCBIT(8) /* receive halt of ring 0 */
#define RSTAT_QHLT1 __PPCBIT(9)
#define RSTAT_QHLT2 __PPCBIT(10)
#define RSTAT_QHLT3 __PPCBIT(11)
#define RSTAT_QHLT4 __PPCBIT(12)
#define RSTAT_QHLT5 __PPCBIT(13)
#define RSTAT_QHLT6 __PPCBIT(14)
#define RSTAT_QHLT7 __PPCBIT(15)
#define RSTAT_QHLTn(n) (RSTAT_QHLT0 >> (n))
#define RSTAT_QHLT __PPCBITS(8,15)
#define RSTAT_RXF0 __PPCBIT(24) /* receive frame event occurred on ring 0 */
#define RSTAT_RXF1 __PPCBIT(25)
#define RSTAT_RXF2 __PPCBIT(26)
#define RSTAT_RXF3 __PPCBIT(27)
#define RSTAT_RXF4 __PPCBIT(28)
#define RSTAT_RXF5 __PPCBIT(29)
#define RSTAT_RXF6 __PPCBIT(30)
#define RSTAT_RXF7 __PPCBIT(31)
#define RSTAT_RXF __PPCBITS(24,31)
#define RSTAT_RXFn(n) (RSTAT_RXF0 >> (n))
#define RXIC 0x310 /* Receive interrupt coalescing register */
#define RXIC_ICEN __PPCBIT(0) /* Interrupt coalescing enable */
#define RXIC_ICCS __PPCBIT(1) /* Interrupt coalescing timer clock source */
#define RXIC_ICCS_ETSEC 0 /* eTSEC Rx interface clocks */
#define RXIC_ICCS_SYSTEM TXIC_ICCS /* system clocks */
#define RXIC_ICFT __PPCBITS(3,10)
#define RXIC_ICFT_SET(n) __SHIFTIN((n),TXIC_ICFT)
#define RXIC_ICTT __PPCBITS(16,31)
#define RXIC_ICTT_SET(n) __SHIFTIN((n),TXIC_ICTT)
#define RQUEUE 0x314 /* Receive queue control register. [TSEC3] */
#define RQUEUE_EX0 __PPCBIT(8) /* data transferred by DMA to ring extracted according to ATTR register */
#define RQUEUE_EX1 __PPCBIT(9)
#define RQUEUE_EX2 __PPCBIT(10)
#define RQUEUE_EX3 __PPCBIT(11)
#define RQUEUE_EX4 __PPCBIT(12)
#define RQUEUE_EX5 __PPCBIT(13)
#define RQUEUE_EX6 __PPCBIT(14)
#define RQUEUE_EX7 __PPCBIT(15)
#define RQUEUE_EXn(n) (RQUEUE_EX0 >> (n))
#define RQUEUE_EX __PPCBITS(8,15)
#define RQUEUE_EN0 __PPCBIT(24) /* ring is queried for reception */
#define RQUEUE_EN1 __PPCBIT(25)
#define RQUEUE_EN2 __PPCBIT(26)
#define RQUEUE_EN3 __PPCBIT(27)
#define RQUEUE_EN4 __PPCBIT(28)
#define RQUEUE_EN5 __PPCBIT(29)
#define RQUEUE_EN6 __PPCBIT(30)
#define RQUEUE_EN7 __PPCBIT(31)
#define RQUEUE_EN __PPCBITS(24,31)
#define RQUEUE_ENn(n) (RQUEUE_EN0 >> (n))
#define RIR0 0x318 /* Ring mapping register 0 */
#define RIR1 0x31c /* Ring mapping register 1 */
#define RIR2 0x320 /* Ring mapping register 2 */
#define RIR3 0x324 /* Ring mapping register 3 */
#define RIRn(n) (RIR0 + 4*(n))
#define RBIFX 0x330 /* Receive bit field extract control register [TSEC3] */
#define RQFAR 0x334 /* Receive queue filing table address register [TSEC3] */
#define RQFCR 0x338 /* Receive queue filing table control register [TSEC3] */
#define RQFCR_GPI __PPCBIT(0) /* General purpose interrupt */
#define RQFCR_HASHTBL __PPCBITS(12,14) /* Select between filer Q value and RIR fileds. */
#define RQFCR_HASHTBL_Q __SHIFTIN(0,RQFCR_HASHTBL)
#define RQFCR_HASHTBL_0 __SHIFTIN(1,RQFCR_HASHTBL)
#define RQFCR_HASHTBL_1 __SHIFTIN(2,RQFCR_HASHTBL)
#define RQFCR_HASHTBL_2 __SHIFTIN(3,RQFCR_HASHTBL)
#define RQFCR_HASHTBL_3 __SHIFTIN(4,RQFCR_HASHTBL)
#define RQFCR_HASH __PPCBIT(15) /* Include parser results in hash */
#define RQFCR_QUEUE __PPCBITS(16,21) /* Receive queue index */
#define RQFCR_QUEUE_SET(n) __SHIFTIN((n),RQFCR_QUEUE)
#define RQFCR_CLE __PPCBIT(22) /* Cluster entry/exit */
#define RQFCR_REJ __PPCBIT(23) /* Reject frame */
#define RQFCR_AND __PPCBIT(24) /* AND, in combination with CLE, REJ, and PID match */
#define RQFCR_CMP __PPCBITS(25,26) /* Comparison operation to perform on the RQPROP entry at this index when PID > 0 */
#define RQFCR_CMP_EXACT __SHIFTIN(0,RQFCR_CMP)
#define RQFCR_CMP_MATCH __SHIFTIN(1,RQFCR_CMP)
#define RQFCR_CMP_NOEXACT __SHIFTIN(2,RQFCR_CMP)
#define RQFCR_CMP_NOMATCH __SHIFTIN(3,RQFCR_CMP)
#define RQFCR_PID __PPCBITS(28,31)
#define RQFCR_PID_MASK 0
#define RQFCR_PID_PARSE 1
#define RQFCR_PID_ARB 2
#define RQFCR_PID_DAH 3
#define RQFCR_PID_DAL 4
#define RQFCR_PID_SAH 5
#define RQFCR_PID_SAL 6
#define RQFCR_PID_ETY 7
#define RQFCR_PID_VID 8
#define RQFCR_PID_PRI 9
#define RQFCR_PID_TOS 10
#define RQFCR_PID_L4P 11
#define RQFCR_PID_DIA 12
#define RQFCR_PID_SIA 13
#define RQFCR_PID_DPT 14
#define RQFCR_PID_SPT 15
#define RQFPR 0x33C /* Receive queue filing table property register [TSEC3] */
#define RQFPR_PID1_AR __PPCBIT(14) /* ARP response */
#define RQFPR_PID1_ARQ __PPCBIT(15) /* ARP request */
#define RQFPR_PID1_EBC __PPCBIT(16) /* destination Ethernet address is to the broadcast address */
#define RQFPR_PID1_VLN __PPCBIT(17) /* VLAN tag */
#define RQFPR_PID1_CFI __PPCBIT(18) /* Canonical Format Indicator */
#define RQFPR_PID1_JUM __PPCBIT(19) /* Jumbo Ethernet frame */
#define RQFPR_PID1_IPF __PPCBIT(20) /* fragmented IPv4 or IPv6 header */
#define RQFPR_PID1_IP4 __PPCBIT(22) /* IPv4 header */
#define RQFPR_PID1_IP6 __PPCBIT(23) /* IPv6 header */
#define RQFPR_PID1_ICC __PPCBIT(24) /* IPv4 header checksum */
#define RQFPR_PID1_ICV __PPCBIT(25) /* IPv4 header checksum was verified correct */
#define RQFPR_PID1_TCP __PPCBIT(26) /* TCP header */
#define RQFPR_PID1_UDP __PPCBIT(27) /* UDP header */
#define RQFPR_PID1_PER __PPCBIT(30) /* parse error */
#define RQFPR_PID1_EER __PPCBIT(31) /* Ethernet framing error */
#define MRBLR 0x340 /* Maximum receive buffer length register */
#define RBDBPH 0x380 /* Rx data buffer pointer high bits [TSEC3] */
#define RBPTR0 0x384 /* RxBD pointer for ring 0 */
#define RBPTR1 0x38C /* RxBD pointer for ring 1 [TSEC3] */
#define RBPTR2 0x394 /* RxBD pointer for ring 2 [TSEC3] */
#define RBPTR3 0x39C /* RxBD pointer for ring 3 [TSEC3] */
#define RBPTR4 0x3A4 /* RxBD pointer for ring 4 [TSEC3] */
#define RBPTR5 0x3AC /* RxBD pointer for ring 5 [TSEC3] */
#define RBPTR6 0x3B4 /* RxBD pointer for ring 6 [TSEC3] */
#define RBPTR7 0x3BC /* RxBD pointer for ring 7 [TSEC3] */
#define RBPTRn(n) (RBPTR0 + 8*(n))
#define RBASEH 0x400 /* RxBD base address high bits [TSEC3] */
#define RBASE0 0x404 /* RxBD base address of ring 0 */
#define RBASE1 0x40C /* RxBD base address of ring 1 [TSEC3] */
#define RBASE2 0x414 /* RxBD base address of ring 2 [TSEC3] */
#define RBASE3 0x41C /* RxBD base address of ring 3 [TSEC3] */
#define RBASE4 0x424 /* RxBD base address of ring 4 [TSEC3] */
#define RBASE5 0x42C /* RxBD base address of ring 5 [TSEC3] */
#define RBASE6 0x434 /* RxBD base address of ring 6 [TSEC3] */
#define RBASE7 0x43C /* RxBD base address of ring 7 [TSEC3] */
#define RBASEn(n) (RBASE0 + 8*(n))
#define TMR_RXTS_H 0x4C0 /* Rx timer time stamp register high [TSEC3] */
#define TMR_RXTS_L 0x4C4 /* Rx timer time stamp register low [TSEC3] */
/* 0x500-0x5ff MAC registers */
#define MACCFG1 0x500 /* MAC configuration register 1 */
#define MACCFG1_SOFT_RESET __PPCBIT(0)
#define MACCFG1_RESET_RX_MAC __PPCBIT(12)
#define MACCFG1_RESET_TX_MAC __PPCBIT(13)
#define MACCFG1_RESET_RX_FUNC __PPCBIT(14)
#define MACCFG1_RESET_TX_FUNC __PPCBIT(15)
#define MACCFG1_LOOPBACK __PPCBIT(23)
#define MACCFG1_RX_FLOW __PPCBIT(26)
#define MACCFG1_TX_FLOW __PPCBIT(27)
#define MACCFG1_SYNC_RX_EN __PPCBIT(28)
#define MACCFG1_RX_EN __PPCBIT(29)
#define MACCFG1_SYNC_TX_EN __PPCBIT(30)
#define MACCFG1_TX_EN __PPCBIT(31)
#define MACCFG2 0x504 /* MAC configuration register 2 */
#define MACCFG2_PRELEN __PPCBITS(16,19)
#define MACCFG2_PRELEN_DEFAULT __SHIFTIN(7,MACCFG2_PRELEN)
#define MACCFG2_IFMODE __PPCBITS(22,23)
#define MACCFG2_IFMODE_MII __SHIFTIN(1,MACCFG2_IFMODE)
#define MACCFG2_IFMODE_GMII __SHIFTIN(2,MACCFG2_IFMODE)
#define MACCFG2_PRERXEN __PPCBIT(24)
#define MACCFG2_PRETXEN __PPCBIT(25)
#define MACCFG2_HG __PPCBIT(26)
#define MACCFG2_LENCHK __PPCBIT(27)
#define MACCFG2_MPEN __PPCBIT(28)
#define MACCFG2_PADCRC __PPCBIT(29)
#define MACCFG2_CRCEN __PPCBIT(30)
#define MACCFG2_FD __PPCBIT(31)
#define MACCFG2_DEFAULT (MACCFG2_FD|MACCFG2_PADCRC|MACCFG2_PRELEN_DEFAULT)
#define IPGIFG 0x508 /* Inter-packet/inter-frame gap register */
#define HAFDUP 0x50C /* Half-duplex control */
#define MAXFRM 0x510 /* Maximum frame length */
#define MIIMCFG 0x520 /* MII management configuration */
#define MIIMCFG_RESET __PPCBIT(0) /* Reset management */
#define MIIMCFG_NOPRE __PPCBIT(27) /* Preamble suppress */
#define MIIMCOM 0x524 /* MII management command */
#define MIIMCOM_SCAN __PPCBIT(30)
#define MIIMCOM_READ __PPCBIT(31)
#define MIIMADD 0x528 /* MII management address */
#define MIIMADD_PHY __PPCBITS(19,23)
#define MIIMADD_REG __PPCBITS(27,31)
#define MIIMCON 0x52C /* MII management control */
#define MIIMSTAT 0x530 /* MII management status */
#define MIIMIND 0x534 /* MII management indicator */
#define MIIMIND_NOTVALID __PPCBIT(29)
#define MIIMIND_SCAN __PPCBIT(30)
#define MIIMIND_BUSY __PPCBIT(31)
#define IFSTAT 0x53C /* Interface status */
#define MACSTNADDR1 0x540 /* MAC station address register 1 */
#define MACSTNADDR2 0x544 /* MAC station address register 2 */
#define MAC01ADDR1 0x548 /* MAC exact match address 1, part 1 [TSEC3] */
#define MAC01ADDR2 0x54C /* MAC exact match address 1, part 2 [TSEC3] */
#define MAC02ADDR1 0x550 /* MAC exact match address 2, part 1 [TSEC3] */
#define MAC02ADDR2 0x554 /* MAC exact match address 2, part 2 [TSEC3] */
#define MAC03ADDR1 0x558 /* MAC exact match address 3, part 1 [TSEC3] */
#define MAC03ADDR2 0x55C /* MAC exact match address 3, part 2 [TSEC3] */
#define MAC04ADDR1 0x560 /* MAC exact match address 4, part 1 [TSEC3] */
#define MAC04ADDR2 0x564 /* MAC exact match address 4, part 2 [TSEC3] */
#define MAC05ADDR1 0x568 /* MAC exact match address 5, part 1 [TSEC3] */
#define MAC05ADDR2 0x56C /* MAC exact match address 5, part 2 [TSEC3] */
#define MAC06ADDR1 0x570 /* MAC exact match address 6, part 1 [TSEC3] */
#define MAC06ADDR2 0x574 /* MAC exact match address 6, part 2 [TSEC3] */
#define MAC07ADDR1 0x578 /* MAC exact match address 7, part 1 [TSEC3] */
#define MAC07ADDR2 0x57C /* MAC exact match address 7, part 2 [TSEC3] */
#define MAC08ADDR1 0x580 /* MAC exact match address 8, part 1 [TSEC3] */
#define MAC08ADDR2 0x584 /* MAC exact match address 8, part 2 [TSEC3] */
#define MAC09ADDR1 0x588 /* MAC exact match address 9, part 1 [TSEC3] */
#define MAC09ADDR2 0x58C /* MAC exact match address 9, part 2 [TSEC3] */
#define MAC10ADDR1 0x590 /* MAC exact match address 10, part 1 [TSEC3] */
#define MAC10ADDR2 0x594 /* MAC exact match address 10, part 2 [TSEC3] */
#define MAC11ADDR1 0x598 /* MAC exact match address 11, part 1 [TSEC3] */
#define MAC11ADDR2 0x59C /* MAC exact match address 11, part 2 [TSEC3] */
#define MAC12ADDR1 0x5A0 /* MAC exact match address 12, part 1 [TSEC3] */
#define MAC12ADDR2 0x5A4 /* MAC exact match address 12, part 2 [TSEC3] */
#define MAC13ADDR1 0x5A8 /* MAC exact match address 13, part 1 [TSEC3] */
#define MAC13ADDR2 0x5AC /* MAC exact match address 13, part 2 [TSEC3] */
#define MAC14ADDR1 0x5B0 /* MAC exact match address 14, part 1 [TSEC3] */
#define MAC14ADDR2 0x5B4 /* MAC exact match address 14, part 2 [TSEC3] */
#define MAC15ADDR1 0x5B8 /* MAC exact match address 15, part 1 [TSEC3] */
#define MAC15ADDR2 0x5BC /* MAC exact match address 15, part 2 [TSEC3] */
#define MACnADDR1(n) (MAC01ADDR1 + 8*(n))
#define MACnADDR2(n) (MAC01ADDR2 + 8*(n))
/* 0x600-0x7ff RMON MIB registers */
/* eTSEC Transmit and Receive Counters */
#define TR64 0x680 /* Transmit and receive 64 byte frame counter */
#define TR127 0x684 /* Transmit and receive 65 to 127-byte frame counter */
#define TR255 0x688 /* Transmit and receive 128 to 255-byte frame counter */
#define TR511 0x68C /* Transmit and receive 256 to 511-byte frame counter */
#define TR1K 0x690 /* Transmit and receive 512 to 1023-byte frame counter */
#define TRMAX 0x694 /* Transmit and receive 1024 to 1518-byte frame counter */
#define TRMGV 0x698 /* Transmit and receive 1519 to 1522-byte good VLAN frame count */
/* eTSEC Receive Counters Registers */
#define RBYT 0x69C /* Receive byte counter */
#define RPKT 0x6A0 /* Receive packet counter */
#define RFCS 0x6A4 /* Receive FCS error counter */
#define RMCA 0x6A8 /* Receive multicast packet counter */
#define RBCA 0x6AC /* Receive broadcast packet counter */
#define RXCF 0x6B0 /* Receive control frame packet counter */
#define RXPF 0x6B4 /* Receive PAUSE frame packet counter */
#define RXUO 0x6B8 /* Receive unknown OP code counter */
#define RALN 0x6BC /* Receive alignment error counter */
#define RFLR 0x6C0 /* Receive frame length error counter */
#define RCDE 0x6C4 /* Receive code error counter */
#define RCSE 0x6C8 /* Receive carrier sense error counter */
#define RUND 0x6CC /* Receive undersize packet counter */
#define ROVR 0x6D0 /* Receive oversize packet counter */
#define RFRG 0x6D4 /* Receive fragments counter */
#define RJBR 0x6D8 /* Receive jabber counter */
#define RDRP 0x6DC /* Receive drop counter */
/* eTSEC Transmit Counters Registers */
#define TBYT 0x6E0 /* Transmit byte counter */
#define TPKT 0x6E4 /* Transmit packet counter */
#define TMCA 0x6E8 /* Transmit multicast packet counter */
#define TBCA 0x6EC /* Transmit broadcast packet counter */
#define TXPF 0x6F0 /* Transmit PAUSE control frame counter */
#define TDFR 0x6F4 /* Transmit deferral packet counter */
#define TEDF 0x6F8 /* Transmit excessive deferral packet counter */
#define TSCL 0x6FC /* Transmit single collision packet counter */
#define TMCL 0x700 /* Transmit multiple collision packet counter */
#define TLCL 0x704 /* Transmit late collision packet counter */
#define TXCL 0x708 /* Transmit excessive collision packet counter */
#define TNCL 0x70C /* Transmit total collision counter */
#define TDRP 0x714 /* Transmit drop frame counter */
#define TJBR 0x718 /* Transmit jabber frame counter */
#define TFCS 0x71C /* Transmit FCS error counter */
#define TXCF 0x720 /* Transmit control frame counter */
#define TOVR 0x724 /* Transmit oversize frame counter */
#define TUND 0x728 /* Transmit undersize frame counter */
#define TFRG 0x72C /* Transmit fragments frame counter */
/* eTSEC Counter Control and TOE Statistics Registers */
#define CAR1 0x730 /* Carry register one register 3 */
#define CAR2 0x734 /* Carry register two register 3 */
#define CAM1 0x738 /* Carry register one mask register */
#define CAM2 0x73C /* Carry register two mask register */
#define RREJ 0x740 /* Receive filter rejected packet counter [TSEC3] */
/* 0x800-0x8ff Hash table registers */
#define IGADDR0 0x800 /* Individual/group address register 0 */
#define IGADDR1 0x804 /* Individual/group address register 1 */
#define IGADDR2 0x808 /* Individual/group address register 2 */
#define IGADDR3 0x80C /* Individual/group address register 3 */
#define IGADDR4 0x810 /* Individual/group address register 4 */
#define IGADDR5 0x814 /* Individual/group address register 5 */
#define IGADDR6 0x818 /* Individual/group address register 6 */
#define IGADDR7 0x81C /* Individual/group address register 7 */
#define IGADDR(n) (IGADDR0 + 4*(n))
#define GADDR0 0x880 /* Group address register 0 */
#define GADDR1 0x884 /* Group address register 1 */
#define GADDR2 0x888 /* Group address register 2 */
#define GADDR3 0x88C /* Group address register 3 */
#define GADDR4 0x890 /* Group address register 4 */
#define GADDR5 0x894 /* Group address register 5 */
#define GADDR6 0x898 /* Group address register 6 */
#define GADDR7 0x89C /* Group address register 7 */
#define GADDR(n) (GADDR0 + 4*(n))
/* 0x900-0x9ff unused */
/* 0xa00-0xaff FIFO control/status registers */
#define FIFOCFG 0xA00 /* FIFO interface configuration register */
/* 0xb00-0xbff DMA system registers */
#define ATTR 0xBF8 /* Attribute register */
#define ATTR_ELCWT __PPCBITS(17,18)
#define ATTR_ELCWT_L2 __SHIFTIN(2, ATTR_ELCWT)
#define ATTR_BDLWT __PPCBITS(20,21)
#define ATTR_BDLWT_L2 __SHIFTIN(2, ATTR_BDLWT)
#define ATTR_RDSEN __PPCBIT(24)
#define ATTR_RBDSEN __PPCBIT(25)
#define ATTR_DEFAULT (ATTR_ELCWT_L2|ATTR_BDLWT_L2|ATTR_RDSEN|ATTR_RBDSEN)
#define ATTRELI 0xBFC /* Attribute extract length and extract index register [TSEC3] */
#define ATTRELI_EL __PPCBITS(2,12) /* extracted length */
#define ATTRELI_EI __PPCBITS(18,28) /* extracted index */
#define ATTRELI_DEFAULT (__SHIFTIN(72, ATTRELI_EL))
/* 0xc00-0xc3f Lossless Flow Control registers */
#define RQPRM0 0xC00 /* Receive Queue Parameters register 0 [TSEC3] */
#define RQPRM1 0xC04 /* Receive Queue Parameters register 1 [TSEC3] */
#define RQPRM2 0xC08 /* Receive Queue Parameters register 2 [TSEC3] */
#define RQPRM3 0xC0C /* Receive Queue Parameters register 3 [TSEC3] */
#define RQPRM4 0xC10 /* Receive Queue Parameters register 4 [TSEC3] */
#define RQPRM5 0xC14 /* Receive Queue Parameters register 5 [TSEC3] */
#define RQPRM6 0xC18 /* Receive Queue Parameters register 6 [TSEC3] */
#define RQPRM7 0xC1C /* Receive Queue Parameters register 7 [TSEC3] */
#define RQPRMn(n) (RQPRM0 + 4*(n))
#define RQPRM_FBTHR __PPCBITS(0,7)
#define RQPRM_FBTHR_SET(n) __SHIFTIN((n),RQPRM_FBTHR)
#define RQPRM_LEN __PPCBITS(8,31)
#define RQPRM_LEN_SET(n) __SHIFTIN((n),RQPRM_LEN)
#define RFBPTR0 0xC44 /* Last Free RxBD pointer for ring 0 [TSEC3] */
#define RFBPTR1 0xC4C /* Last Free RxBD pointer for ring 1 [TSEC3] */
#define RFBPTR2 0xC54 /* Last Free RxBD pointer for ring 2 [TSEC3] */
#define RFBPTR3 0xC58 /* Last Free RxBD pointer for ring 3 [TSEC3] */
#define RFBPTR4 0xC64 /* Last Free RxBD pointer for ring 4 [TSEC3] */
#define RFBPTR5 0xC6C /* Last Free RxBD pointer for ring 5 [TSEC3] */
#define RFBPTR6 0xC74 /* Last Free RxBD pointer for ring 6 [TSEC3] */
#define RFBPTR7 0xC7C /* Last Free RxBD pointer for ring 7 [TSEC3] */
#define RFBPTRn(n) (RFBPTR0 + 4*(n))
/* 0xc40-0xdff unused */
/* 0xe00-0xeaf 1588 Hardware Assist */
#define TMR_CTRL 0xE00 /* Timer control register [TSEC3] */
#define TMR_TEVENT 0xE04 /* time stamp event register [TSEC3] */
#define TMR_TEMASK 0xE08 /* Timer event mask register [TSEC3] */
#define TMR_PEVENT 0xE0C /* time stamp event register [TSEC3] */
#define TMR_PEMASK 0xE10 /* Timer event mask register [TSEC3] */
#define TMR_STAT 0xE14 /* time stamp status register [TSEC3] */
#define TMR_CNT_H 0xE18 /* timer counter high register [TSEC3] */
#define TMR_CNT_L 0xE1C /* timer counter low register [TSEC3] */
#define TMR_ADD 0xE20 /* Timer drift compensation addend register [TSEC3] */
#define TMR_ACC 0xE24 /* Timer accumulator register [TSEC3] */
#define TMR_PRSC 0xE28 /* timer prescale [TSEC3] */
#define TMROFF_H 0xE30 /* Timer offset high [TSEC3] */
#define TMROFF_L 0xE34 /* Timer offset low [TSEC3] */
#define TMR_ALARM1_H 0xE40 /* Timer alarm 1 high register [TSEC3] */
#define TMR_ALARM1_L 0xE44 /* Timer alarm 1 high register [TSEC3] */
#define TMR_ALARM2_H 0xE48 /* Timer alarm 2 high register [TSEC3] */
#define TMR_ALARM2_L 0xE4C /* Timer alarm 2 high register [TSEC3] */
#define TMR_FIPER1 0xE80 /* Timer fixed period interval [TSEC3] */
#define TMR_FIPER2 0xE84 /* Timer fixed period interval [TSEC3] */
#define TMR_FIPER 0xE88 /* Timer fixed period interval [TSEC3] */
#define TMR_ETTS1_H 0xEA0 /* Time stamp of general purpose external trigger [TSEC3] */
#define TMR_ETTS1_L 0xEA4 /* Time stamp of general purpose external trigger [TSEC3] */
#define TMR_ETTS2_H 0xEA8 /* Time stamp of general purpose external trigger [TSEC3] */
#define TMR_ETTS2_L 0xEAC /* Time stamp of general purpose external trigger [TSEC3] */
/* 0xeb0-0xeff Interrupt steering and coalescing */
#define ISRG0 0xeb0 /* Interrupt steering register group 0 */
#define ISRG1 0xeb4 /* Interrupt steering register group 1 */
#define ISRGn(n) (ISRG0+4*(n))
#define ISRG_RRn(n) __PPCBIT(n)
#define ISRG_TRn(n) __PPCBIT(8+(n))
#define RXIC0 0xed0 /* Ring 0 Rx interrupt coalescing register */
#define RXIC1 0xed4 /* Ring 1 Rx interrupt coalescing register */
#define RXIC2 0xed8 /* Ring 2 Rx interrupt coalescing register */
#define RXIC3 0xedc /* Ring 3 Rx interrupt coalescing register */
#define RXIC4 0xee0 /* Ring 4 Rx interrupt coalescing register */
#define RXIC5 0xee4 /* Ring 5 Rx interrupt coalescing register */
#define RXIC6 0xee8 /* Ring 6 Rx interrupt coalescing register */
#define RXIC7 0xeec /* Ring 7 Rx interrupt coalescing register */
#define RXICn(n) (RXIC0+4*(n))
#define TXIC0 0xf10 /* Ring 0 Tx interrupt coalescing register */
#define TXIC1 0xf14 /* Ring 1 Tx interrupt coalescing register */
#define TXIC2 0xf18 /* Ring 2 Tx interrupt coalescing register */
#define TXIC3 0xf1c /* Ring 3 Tx interrupt coalescing register */
#define TXIC4 0xf20 /* Ring 4 Tx interrupt coalescing register */
#define TXIC5 0xf24 /* Ring 5 Tx interrupt coalescing register */
#define TXIC6 0xf28 /* Ring 6 Tx interrupt coalescing register */
#define TXIC7 0xf2c /* Ring 7 Tx interrupt coalescing register */
#define TXICn(n) (TXIC0+4*(n))
#endif /* _POWERPC_BOOKE_ETSECREG_H_ */
|