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