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