gemini_gmacreg.h revision 1.2 1 1.2 matt /* $NetBSD: gemini_gmacreg.h,v 1.2 2008/12/15 04:44:27 matt Exp $ */
2 1.1 matt /*-
3 1.1 matt * Copyright (c) 2008 The NetBSD Foundation, Inc.
4 1.1 matt * All rights reserved.
5 1.1 matt *
6 1.1 matt * This code is derived from software contributed to The NetBSD Foundation
7 1.1 matt * by Matt Thomas <matt (at) 3am-software.com>
8 1.1 matt *
9 1.1 matt * Redistribution and use in source and binary forms, with or without
10 1.1 matt * modification, are permitted provided that the following conditions
11 1.1 matt * are met:
12 1.1 matt * 1. Redistributions of source code must retain the above copyright
13 1.1 matt * notice, this list of conditions and the following disclaimer.
14 1.1 matt * 2. Redistributions in binary form must reproduce the above copyright
15 1.1 matt * notice, this list of conditions and the following disclaimer in the
16 1.1 matt * documentation and/or other materials provided with the distribution.
17 1.1 matt *
18 1.1 matt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 1.1 matt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 1.1 matt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 1.1 matt * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 1.1 matt * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 1.1 matt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 1.1 matt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 1.1 matt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 1.1 matt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 1.1 matt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 1.1 matt * POSSIBILITY OF SUCH DAMAGE.
29 1.1 matt */
30 1.1 matt
31 1.1 matt #ifndef _ARM_GEMINI_GEMINI_GMACREG_H
32 1.1 matt #define _ARM_GEMINI_GEMINI_GMACREG_H
33 1.1 matt
34 1.1 matt #define GMAC_GLOBAL_OFFSET 0x0000
35 1.1 matt #define GMAC_GLOBAL_SIZE 0x2000
36 1.1 matt
37 1.1 matt #define GMAC_TOE_VERSION 0x0000
38 1.1 matt #define GMAC_TOE_DEVID(x) (((x) >> 4) & 0xfff)
39 1.1 matt #define GMAC_TOE_REVID(x) (((x) >> 0) & 0x00f)
40 1.1 matt
41 1.1 matt #define GMAC_SWFREEQ_BASE 0x0004
42 1.1 matt #define GMAC_HWFREEQ_BASE 0x0008
43 1.1 matt
44 1.1 matt #define FREEQ_SIZE 0x000f /* 2^n from 3 to 15 */
45 1.1 matt
46 1.1 matt #define GMAC_SKBSIZE 0x0010
47 1.1 matt #define SKB_SIZE_SET(hw,sw) (((hw) << 16) | (sw))
48 1.1 matt
49 1.1 matt #define GMAC_SWFREEQ_RWPTR 0x0014
50 1.1 matt #define GMAC_HWFREEQ_RWPTR 0x0018
51 1.1 matt
52 1.1 matt #define GMAC_INT0_STATUS 0x0020
53 1.1 matt #define GMAC_INT0_MASK 0x0024
54 1.1 matt #define GMAC_INT0_SELECT 0x0028
55 1.1 matt
56 1.1 matt #define INT0_TXDERR1 __BIT(31) /* GMAC1 AHB bus err while TX */
57 1.1 matt #define INT0_TXPERR1 __BIT(30) /* GMAC1 TX descriptor error */
58 1.1 matt #define INT0_TXDERR0 __BIT(29) /* GMAC0 AHB bus err while TX */
59 1.1 matt #define INT0_TXPERR0 __BIT(28) /* GMAC0 TX descriptor error */
60 1.1 matt #define INT0_RXDERR1 __BIT(27) /* GMAC1 AHB bus err while RX */
61 1.1 matt #define INT0_RXPERR1 __BIT(26) /* GMAC1 RX descriptor error */
62 1.1 matt #define INT0_RXDERR0 __BIT(25) /* GMAC0 AHB bus err while RX */
63 1.1 matt #define INT0_RXPERR0 __BIT(24) /* GMAC0 RX descriptor error */
64 1.1 matt #define INT0_SWTXQ15_FIN __BIT(23) /* GMAC1 SW TX queue 5 finish */
65 1.1 matt #define INT0_SWTXQ14_FIN __BIT(22) /* GMAC1 SW TX queue 4 finish */
66 1.1 matt #define INT0_SWTXQ13_FIN __BIT(21) /* GMAC1 SW TX queue 3 finish */
67 1.1 matt #define INT0_SWTXQ12_FIN __BIT(20) /* GMAC1 SW TX queue 2 finish */
68 1.1 matt #define INT0_SWTXQ11_FIN __BIT(19) /* GMAC1 SW TX queue 1 finish */
69 1.1 matt #define INT0_SWTXQ10_FIN __BIT(18) /* GMAC1 SW TX queue 0 finish */
70 1.1 matt #define INT0_SWTXQ1n_FIN(n) __BIT(18 + n)
71 1.1 matt #define INT0_SWTXQ1_FIN __BITS(18,23)
72 1.1 matt #define INT0_SWTXQ05_FIN __BIT(17) /* GMAC0 SW TX queue 5 finish */
73 1.1 matt #define INT0_SWTXQ04_FIN __BIT(16) /* GMAC0 SW TX queue 4 finish */
74 1.1 matt #define INT0_SWTXQ03_FIN __BIT(15) /* GMAC0 SW TX queue 3 finish */
75 1.1 matt #define INT0_SWTXQ02_FIN __BIT(14) /* GMAC0 SW TX queue 2 finish */
76 1.1 matt #define INT0_SWTXQ01_FIN __BIT(13) /* GMAC0 SW TX queue 1 finish */
77 1.1 matt #define INT0_SWTXQ00_FIN __BIT(12) /* GMAC0 SW TX queue 0 finish */
78 1.1 matt #define INT0_SWTXQ0n_FIN(n) __BIT(12 + n)
79 1.1 matt #define INT0_SWTXQ0_FIN __BITS(12,17)
80 1.1 matt #define INT0_SWTXQ_FIN __BITS(12,23)
81 1.1 matt #define INT0_SWTXQ15_EOF __BIT(11) /* GMAC1 SW TX queue 5 EOF */
82 1.1 matt #define INT0_SWTXQ14_EOF __BIT(10) /* GMAC1 SW TX queue 4 EOF */
83 1.1 matt #define INT0_SWTXQ13_EOF __BIT( 9) /* GMAC1 SW TX queue 3 EOF */
84 1.1 matt #define INT0_SWTXQ12_EOF __BIT( 8) /* GMAC1 SW TX queue 2 EOF */
85 1.1 matt #define INT0_SWTXQ11_EOF __BIT( 7) /* GMAC1 SW TX queue 1 EOF */
86 1.1 matt #define INT0_SWTXQ10_EOF __BIT( 6) /* GMAC1 SW TX queue 0 EOF */
87 1.1 matt #define INT0_SWTXQ1n_EOF(n) __BIT( 6 + n)
88 1.1 matt #define INT0_SWTXQ1_EOF __BITS(6,11)
89 1.1 matt #define INT0_SWTXQ05_EOF __BIT( 5) /* GMAC0 SW TX queue 5 EOF */
90 1.1 matt #define INT0_SWTXQ04_EOF __BIT( 4) /* GMAC0 SW TX queue 4 EOF */
91 1.1 matt #define INT0_SWTXQ03_EOF __BIT( 3) /* GMAC0 SW TX queue 3 EOF */
92 1.1 matt #define INT0_SWTXQ02_EOF __BIT( 2) /* GMAC0 SW TX queue 2 EOF */
93 1.1 matt #define INT0_SWTXQ01_EOF __BIT( 1) /* GMAC0 SW TX queue 1 EOF */
94 1.1 matt #define INT0_SWTXQ00_EOF __BIT( 0) /* GMAC0 SW TX queue 0 EOF */
95 1.1 matt #define INT0_SWTXQ0n_EOF(n) __BIT( n)
96 1.1 matt #define INT0_SWTXQ0_EOF __BITS(0,5)
97 1.1 matt #define INT0_SWTXQ_EOF __BITS(0,11)
98 1.1 matt
99 1.1 matt #define INT0_TXDERR (INT0_TXDERR0|INT0_TXDERR1)
100 1.1 matt #define INT0_TXPERR (INT0_TXPERR0|INT0_TXPERR1)
101 1.1 matt #define INT0_RXDERR (INT0_RXDERR0|INT0_RXDERR1)
102 1.1 matt #define INT0_RXPERR (INT0_RXPERR0|INT0_RXPERR1)
103 1.1 matt
104 1.1 matt #define INT0_SWTXQn_FIN(n) (INT0_SWTXQ0n_FIN(n)|INT0_SWTXQ1n_FIN(n))
105 1.1 matt #define INT0_SWTXQn_EOF(n) (INT0_SWTXQ0n_EOF(n)|INT0_SWTXQ1n_EOF(n))
106 1.1 matt
107 1.1 matt #define INT0_GMAC0 \
108 1.1 matt (INT0_TXDERR0|INT0_TXPERR0|INT0_RXDERR0|INT0_RXPERR0 \
109 1.1 matt |INT0_SWTXQ05_FIN|INT0_SWTXQ04_FIN|INT0_SWTXQ03_FIN \
110 1.1 matt |INT0_SWTXQ02_FIN|INT0_SWTXQ01_FIN|INT0_SWTXQ00_FIN \
111 1.1 matt |INT0_SWTXQ05_EOF|INT0_SWTXQ04_EOF|INT0_SWTXQ03_EOF \
112 1.1 matt |INT0_SWTXQ02_EOF|INT0_SWTXQ01_EOF|INT0_SWTXQ00_EOF)
113 1.1 matt #define INT0_GMAC1 \
114 1.1 matt (INT0_TXDERR1|INT0_TXPERR1|INT0_RXDERR1|INT0_RXPERR1 \
115 1.1 matt |INT0_SWTXQ15_FIN|INT0_SWTXQ14_FIN|INT0_SWTXQ13_FIN \
116 1.1 matt |INT0_SWTXQ12_FIN|INT0_SWTXQ11_FIN|INT0_SWTXQ10_FIN \
117 1.1 matt |INT0_SWTXQ15_EOF|INT0_SWTXQ14_EOF|INT0_SWTXQ13_EOF \
118 1.1 matt |INT0_SWTXQ12_EOF|INT0_SWTXQ11_EOF|INT0_SWTXQ10_EOF)
119 1.1 matt
120 1.1 matt #define GMAC_INT1_STATUS 0x0030
121 1.1 matt #define GMAC_INT1_MASK 0x0034
122 1.1 matt #define GMAC_INT1_SELECT 0x0038
123 1.1 matt
124 1.1 matt #define INT1_TOE_IQ3_FULL __BIT(31) /* TOE Intr Queue3 Full */
125 1.1 matt #define INT1_TOE_IQ2_FULL __BIT(30) /* TOE Intr Queue2 Full */
126 1.1 matt #define INT1_TOE_IQ1_FULL __BIT(29) /* TOE Intr Queue1 Full */
127 1.1 matt #define INT1_TOE_IQ0_FULL __BIT(28) /* TOE Intr Queue0 Full */
128 1.1 matt #define INT1_TOE_IQ3_NONEMPTY __BIT(27) /* TOE Intr Queue3 !Emtpy */
129 1.1 matt #define INT1_TOE_IQ2_NONEMPTY __BIT(26) /* TOE Intr Queue2 !Emtpy */
130 1.1 matt #define INT1_TOE_IQ1_NONEMPTY __BIT(25) /* TOE Intr Queue1 !Emtpy */
131 1.1 matt #define INT1_TOE_IQ0_NONEMPTY __BIT(24) /* TOE Intr Queue0 !Emtpy */
132 1.1 matt #define INT1_HWTQ13_EOF __BIT(23) /* GMAC1 HW TX Queue3 EOF */
133 1.1 matt #define INT1_HWTQ12_EOF __BIT(22) /* GMAC1 HW TX Queue2 EOF */
134 1.1 matt #define INT1_HWTQ11_EOF __BIT(21) /* GMAC1 HW TX Queue1 EOF */
135 1.1 matt #define INT1_HWTQ10_EOF __BIT(20) /* GMAC1 HW TX Queue0 EOF */
136 1.1 matt #define INT1_HWTQ03_EOF __BIT(19) /* GMAC0 HW TX Queue3 EOF */
137 1.1 matt #define INT1_HWTQ02_EOF __BIT(18) /* GMAC0 HW TX Queue2 EOF */
138 1.1 matt #define INT1_HWTQ01_EOF __BIT(17) /* GMAC0 HW TX Queue1 EOF */
139 1.1 matt #define INT1_HWTQ00_EOF __BIT(16) /* GMAC0 HW TX Queue0 EOF */
140 1.1 matt #define INT1_CLASS_Q_EOF(n) __BIT((n)+2) /* Classfication Q[n] EOF */
141 1.1 matt #define INT1_DEF_RXQ1_EOF __BIT(1) /* GMAC1 Default RX Queue EOF */
142 1.1 matt #define INT1_DEF_RXQ0_EOF __BIT(0) /* GMAC0 Default RX Queue EOF */
143 1.1 matt
144 1.1 matt #define INT1_DEF_RXQ_EOF (INT1_DEF_RXQ0_EOF|INT1_DEF_RXQ1_EOF)
145 1.1 matt #define INT1_HWTQ3_EOF (INT1_HWTQ03_EOF|INT1_HWTQ13_EOF)
146 1.1 matt #define INT1_HWTQ2_EOF (INT1_HWTQ02_EOF|INT1_HWTQ12_EOF)
147 1.1 matt #define INT1_HWTQ1_EOF (INT1_HWTQ01_EOF|INT1_HWTQ11_EOF)
148 1.1 matt #define INT1_HWTQ0_EOF (INT1_HWTQ00_EOF|INT1_HWTQ10_EOF)
149 1.1 matt
150 1.1 matt #define INT1_GMAC0 \
151 1.1 matt (INT1_HWTQ03_EOF|INT1_HWTQ02_EOF|INT1_HWTQ01_EOF|INT1_HWTQ00_EOF \
152 1.1 matt |INT1_DEF_RXQ0_EOF)
153 1.1 matt #define INT1_GMAC1 \
154 1.1 matt (INT1_HWTQ13_EOF|INT1_HWTQ12_EOF|INT1_HWTQ11_EOF|INT1_HWTQ10_EOF \
155 1.1 matt |INT1_DEF_RXQ1_EOF)
156 1.1 matt
157 1.1 matt #define GMAC_INT2_STATUS 0x0040
158 1.1 matt #define GMAC_INT2_MASK 0x0044
159 1.1 matt #define GMAC_INT2_SELECT 0x0048
160 1.1 matt
161 1.1 matt #define INT2_TOE_QFULL(n) __BIT((n)-32) /* TOE (32-63) Q[n] Full */
162 1.1 matt #define INT2_GMAC0 0
163 1.1 matt #define INT2_GMAC1 0
164 1.1 matt
165 1.1 matt #define GMAC_INT3_STATUS 0x0050
166 1.1 matt #define GMAC_INT3_MASK 0x0054
167 1.1 matt #define GMAC_INT3_SELECT 0x0058
168 1.1 matt
169 1.1 matt #define INT3_TOE_QFULL(n) __BIT((n)) /* TOE (0-31) Q[n] Full */
170 1.1 matt #define INT3_GMAC0 0
171 1.1 matt #define INT3_GMAC1 0
172 1.1 matt
173 1.1 matt #define GMAC_INT4_STATUS 0x0060
174 1.1 matt #define GMAC_INT4_MASK 0x0064
175 1.1 matt #define GMAC_INT4_SELECT 0x0068
176 1.1 matt
177 1.1 matt #define INT4_TX_FAIL0 __BIT(23) /* GMAC0 TX fail */
178 1.1 matt #define INT4_TX_FAIL1 __BIT(23+8) /* GMAC1 TX fail */
179 1.1 matt #define INT4_TX_FAIL (INT4_TX_FAIL0|INT4_TX_FAIL1)
180 1.1 matt #define INT4_MIB_HEMIWRAP0 __BIT(22) /* GMAC0 MIB counters 1/2 */
181 1.1 matt #define INT4_MIB_HEMIWRAP1 __BIT(22+8) /* GMAC1 MIB counters 1/2 */
182 1.1 matt #define INT4_MIB_HEMIWRAP (INT4_MIB_HEMIWRAP0|INT4_MIB_HEMIWRAP1)
183 1.1 matt #define INT4_RX_XON0 __BIT(21) /* GMAC0 RX Pause On */
184 1.1 matt #define INT4_RX_XON1 __BIT(21+8) /* GMAC1 RX Pause On */
185 1.1 matt #define INT4_RX_XON (INT4_RX_XON0|INT4_RX_XON1)
186 1.1 matt #define INT4_TX_XON0 __BIT(20) /* GMAC0 TX Pause On */
187 1.1 matt #define INT4_TX_XON1 __BIT(20+8) /* GMAC1 TX Pause On */
188 1.1 matt #define INT4_TX_XON (INT4_TX_XON0|INT4_TX_XON1)
189 1.1 matt #define INT4_RX_XOFF0 __BIT(19) /* GMAC0 RX Pause Off */
190 1.1 matt #define INT4_RX_XOFF1 __BIT(19+8) /* GMAC1 RX Pause Off */
191 1.1 matt #define INT4_RX_XOFF (INT4_RX_XOFF0|INT4_RX_XOFF1)
192 1.1 matt #define INT4_TX_XOFF0 __BIT(18) /* GMAC0 TX Pause Off */
193 1.1 matt #define INT4_TX_XOFF1 __BIT(18+8) /* GMAC1 TX Pause Off */
194 1.1 matt #define INT4_TX_XOFF (INT4_TX_XOFF0|INT4_TX_XOFF1)
195 1.1 matt #define INT4_RX_FIFO_OVRN0 __BIT(17) /* GMAC0 RX FIFO overrun */
196 1.1 matt #define INT4_RX_FIFO_OVRN1 __BIT(17+8) /* GMAC1 RX FIFO overrun */
197 1.1 matt #define INT4_RX_FIFO_OVRN (INT4_RX_FIFO_OVRN0|INT4_RX_FIFO_OVRN1)
198 1.1 matt #define INT4_RGMII_STSCHG0 __BIT(16) /* GMAC0 RGMII status change */
199 1.1 matt #define INT4_RGMII_STSCHG1 __BIT(16+8) /* GMAC1 RGMII status change */
200 1.1 matt #define INT4_RGMII_STSCHG (INT4_RGMII_STSCHG0|INT4_RGMII_STSCHG1)
201 1.1 matt #define INT4_CLASS_Q_FULL(n) __BIT((n)+2) /* Classification Q[n] Full */
202 1.1 matt #define INT4_HW_FREEQ_EMPTY __BIT(1) /* HW Free Q empty */
203 1.1 matt #define INT4_SW_FREEQ_EMPTY __BIT(0) /* SW Free Q empty */
204 1.1 matt
205 1.1 matt #define INT4_GMAC0 __BITS(16,23)
206 1.2 matt #define INT4_GMAC1 (__BITS(24,31)|INT4_HW_FREEQ_EMPTY)
207 1.1 matt
208 1.1 matt #define GMAC_NONTOE_QH_OFFSET 0x2000
209 1.1 matt #define GMAC_NONTOE_QH_SIZE 0x1000
210 1.1 matt
211 1.1 matt #define GMAC_DEF_RXQn_BASE(n) (0x2000 + (n) * 4)
212 1.1 matt #define GMAC_DEF_RXQn_RWPTR(n) (0x2004 + (n) * 4)
213 1.1 matt #define GMAC_DEF_RXQ0_BASE 0x2000
214 1.1 matt #define GMAC_DEF_RXQ0_RWPTR 0x2004
215 1.1 matt #define GMAC_DEF_RXQ1_BASE 0x2008
216 1.1 matt #define GMAC_DEF_RXQ1_RWPTR 0x200c
217 1.1 matt
218 1.1 matt #define GMAC_TOE_QH_OFFSET 0x3000
219 1.1 matt #define GMAC_TOE_QH_SIZE 0x1000
220 1.1 matt
221 1.1 matt #define GMAC_VBIT_MEM_OFFSET 0x4000
222 1.1 matt #define GMAC_VBIT_MEM_SIZE 0x2000
223 1.1 matt
224 1.1 matt #define GMAC_ABIT_MEM_OFFSET 0x6000
225 1.1 matt #define GMAC_ABIT_MEM_SIZE 0x2000
226 1.1 matt
227 1.1 matt #define GMAC_PORT0_DMA_OFFSET 0x8000
228 1.1 matt #define GMAC_PORT_DMA_SIZE 0x2000
229 1.1 matt
230 1.1 matt #define GMAC_DMAVR 0x0000
231 1.1 matt #define DMAVR_RXDMA_ENABLE __BIT(31)
232 1.1 matt #define DMAVR_TXDMA_ENABLE __BIT(30)
233 1.1 matt #define DMAVR_LOOPBACK __BIT(29)
234 1.1 matt #define DMAVR_DROP_SMALL_ACK __BIT(28)
235 1.1 matt #define DMAVR_EXTRABYTES_MASK __BITS(16,17)
236 1.1 matt #define DMAVR_EXTRABYTES_GET(x) (((x) >> 16) & DMAR_EXTRABYTES_MASK)
237 1.1 matt #define DMAVR_EXTRABYTES(x) (((x) & DMAVR_EXTRABYTES_MASK) << 16)
238 1.1 matt #define DMAVR_RXBURSTSIZE_MASK __BITS(10,11)
239 1.1 matt #define DMAVR_RXBURSTSIZE_GET(x) (((x) >> 10) & DMAR_BURSTSIZE_MASK)
240 1.1 matt #define DMAVR_RXBURSTSIZE(x) (((x) & DMAVR_BURSTSIZE_MASK) << 10)
241 1.1 matt #define DMAVR_RXBUSWIDTH_MASK __BITS(8,9)
242 1.1 matt #define DMAVR_RXBUSWIDTH_GET(x) (((x) >> 8) & DMAVR_BUSWIDTH_MASK)
243 1.1 matt #define DMAVR_RXBUSWIDTH(x) (((x) & DMAVR_BUSWIDTH_MASK) << 8)
244 1.1 matt #define DMAVR_TXBURSTSIZE_MASK __BITS(2,3)
245 1.1 matt #define DMAVR_TXBURSTSIZE_GET(x) (((x) >> 2) & DMAR_BURSTSIZE_MASK)
246 1.1 matt #define DMAVR_TXBURSTSIZE(x) (((x) & DMAVR_BURSTSIZE_MASK) << 2)
247 1.1 matt #define DMAVR_TXBUSWIDTH_MASK __BITS(0,1)
248 1.1 matt #define DMAVR_TXBUSWIDTH_GET(x) (((x) >> 0) & DMAVR_BUSWIDTH_MASK)
249 1.1 matt #define DMAVR_TXBUSWIDTH(x) (((x) & DMAVR_BUSWIDTH_MASK) << 0)
250 1.1 matt #define DMAVR_BURSTSIZE_4W 0
251 1.1 matt #define DMAVR_BURSTSIZE_8W 1
252 1.1 matt #define DMAVR_BURSTSIZE_16W 2
253 1.1 matt #define DMAVR_BURSTSIZE_32W 3
254 1.1 matt #define DMAVR_BURSTSIZE_MASK 3
255 1.1 matt #define DMAVR_BUSWIDTH_8BITS 0
256 1.1 matt #define DMAVR_BUSWIDTH_16BITS 2
257 1.1 matt #define DMAVR_BUSWIDTH_32BITS 3
258 1.1 matt #define DMAVR_BUSWIDTH_MASK 3
259 1.1 matt #define GMAC_TX_WEIGHTING_1 0x0004
260 1.1 matt #define GMAC_TX_WEIGHTING_2 0x0008
261 1.1 matt #define GMAC_SW_TX_Qn_RWPTR(n) (0x000c+(n)*4)
262 1.2 matt #define GMAC_SW_TX_Q0_RWPTR GMAC_SW_TX_Qn_RWPTR(0)
263 1.2 matt #define GMAC_SW_TX_Q1_RWPTR GMAC_SW_TX_Qn_RWPTR(1)
264 1.2 matt #define GMAC_SW_TX_Q2_RWPTR GMAC_SW_TX_Qn_RWPTR(2)
265 1.2 matt #define GMAC_SW_TX_Q3_RWPTR GMAC_SW_TX_Qn_RWPTR(3)
266 1.2 matt #define GMAC_SW_TX_Q4_RWPTR GMAC_SW_TX_Qn_RWPTR(4)
267 1.2 matt #define GMAC_SW_TX_Q5_RWPTR GMAC_SW_TX_Qn_RWPTR(5)
268 1.1 matt #define GMAC_HW_TX_Qn_RWPTR(n) (0x0024+(n)*4)
269 1.2 matt #define GMAC_HW_TX_Q0_RWPTR GMAC_HW_TX_Qn_RWPTR(0)
270 1.2 matt #define GMAC_HW_TX_Q1_RWPTR GMAC_HW_TX_Qn_RWPTR(1)
271 1.2 matt #define GMAC_HW_TX_Q2_RWPTR GMAC_HW_TX_Qn_RWPTR(2)
272 1.2 matt #define GMAC_HW_TX_Q3_RWPTR GMAC_HW_TX_Qn_RWPTR(3)
273 1.1 matt
274 1.1 matt #define GMAC_DMA_TX_1ST_DESC 0x0038
275 1.1 matt #define GMAC_DMA_TX_CUR_DESC 0x003c
276 1.1 matt #define GMAC_DMA_TX_DESC(n) (0x0040+(n)*4)
277 1.1 matt #define GMAC_DMA_TX_DESC0 GMAC_DMA_TX_DESC(0)
278 1.1 matt #define GMAC_DMA_TX_DESC1 GMAC_DMA_TX_DESC(1)
279 1.1 matt #define GMAC_DMA_TX_DESC2 GMAC_DMA_TX_DESC(2)
280 1.1 matt #define GMAC_DMA_TX_DESC3 GMAC_DMA_TX_DESC(3)
281 1.1 matt #define GMAC_SW_TX_Q_BASE 0x0050
282 1.1 matt #define GMAC_HW_TX_Q_BASE 0x0054
283 1.1 matt
284 1.1 matt #define GMAC_DMA_RX_1ST_DESC 0x0058
285 1.1 matt #define GMAC_DMA_RX_CUR_DESC 0x005c
286 1.1 matt #define GMAC_DMA_RX_DESC(n) (0x0060+(n)*4)
287 1.1 matt #define GMAC_DMA_RX_DESC0 GMAC_DMA_RX_DESC(0)
288 1.1 matt #define GMAC_DMA_RX_DESC1 GMAC_DMA_RX_DESC(1)
289 1.1 matt #define GMAC_DMA_RX_DESC2 GMAC_DMA_RX_DESC(2)
290 1.1 matt #define GMAC_DMA_RX_DESC3 GMAC_DMA_RX_DESC(3)
291 1.1 matt
292 1.1 matt #define GMAC_HEE_AO_EL0 0x0070 /* HashEngineEna/ActionOff/EntryLen */
293 1.1 matt #define GMAC_HEE_AO_EL1 0x0070 /* HashEngineEna/ActionOff/EntryLen */
294 1.1 matt
295 1.1 matt #define GMAC_RULEMATCH0(n) (0x0078+(n)*12)
296 1.1 matt #define GMAC_RULEMATCH1(n) (0x0080+(n)*12)
297 1.1 matt #define GMAC_RULEMATCH2(n) (0x0084+(n)*12)
298 1.1 matt
299 1.1 matt #define GMAC_SUPPORTEDPROTO(n) (0x00a8+(n)*4)
300 1.1 matt #define GMAC_HRT_AHB_WEIGHTING 0x00c8 /* Hash/Rx/Tx AHB Weighting */
301 1.1 matt
302 1.1 matt #define HRT_AHB_TQDV_START __BITS(20,24)
303 1.1 matt #define HRT_AHB_RX_PREREQ __BITS(15,19)
304 1.1 matt #define HRT_AHB_TX_WEIGHT __BITS(10,14)
305 1.1 matt #define HRT_AHB_RX_WEIGHT __BITS(5,9)
306 1.1 matt #define HRT_AHB_HASH_WEIGHT __BITS(0,4)
307 1.1 matt
308 1.1 matt #define GMAC_PORTn_DMA_OFFSET(n) (0x8000 + (n) * 0x4000)
309 1.1 matt #define GMAC_PORTn_GMAC_OFFSET(n) (0xa000 + (n) * 0x4000)
310 1.1 matt #define GMAC_PORTn_DMA_SIZE 0x2000
311 1.1 matt #define GMAC_PORTn_GMAC_SIZE 0x2000
312 1.1 matt
313 1.1 matt #define GMAC_STA_ADD0 0x0000
314 1.1 matt #define GMAC_STA_ADD1 0x0004
315 1.1 matt #define GMAC_STA_ADD2 0x0008
316 1.1 matt
317 1.1 matt #define GMAC_RX_FILTER 0x000c
318 1.1 matt #define RXFILTER_PROMISC_ALL __BIT(4)
319 1.1 matt #define RXFILTER_PROMISC __BIT(3)
320 1.1 matt #define RXFILTER_BROADCAST __BIT(2)
321 1.1 matt #define RXFILTER_MULTICAST __BIT(1)
322 1.1 matt #define RXFILTER_UNICAST __BIT(0)
323 1.1 matt
324 1.1 matt #define GMAC_MCAST_FILTER0 0x0010
325 1.1 matt #define GMAC_MCAST_FILTER1 0x0014
326 1.1 matt
327 1.1 matt #define GMAC_CONFIG0 0x0018
328 1.1 matt
329 1.1 matt #define CONFIG0_PORT1_CLASSIFY_QCHECK_EN __BIT(29)
330 1.1 matt #define CONFIG0_PORT0_CLASSIFY_QCHECK_EN __BIT(28)
331 1.1 matt #define CONFIG0_PORT1_TOE_ALMOSTFULL_EN __BIT(27)
332 1.1 matt #define CONFIG0_PORT0_TOE_ALMOSTFULL_EN __BIT(26)
333 1.1 matt #define CONFIG0_PORT1_RX_HW_QCHECK_EN __BIT(25)
334 1.1 matt #define CONFIG0_PORT0_RX_HW_QCHECK_EN __BIT(24)
335 1.1 matt #define CONFIG0_RX_ER_DETECTING_INDEX_DIS __BIT(23)
336 1.1 matt #define CONFIG0_IPV6_STRICT_ORDER __BIT(22)
337 1.1 matt #define CONFIG0_INVERSE_RXC_RGMII __BIT(21)
338 1.1 matt #define CONFIG0_R_LATCHED_MMII __BIT(20)
339 1.1 matt #define CONFIG0_VLAN_TAG_REMOVAL __BIT(19)
340 1.1 matt #define CONFIG0_IPV6_RX_CHECKSUM_ENABLE __BIT(18)
341 1.1 matt #define CONFIG0_IPV4_RX_CHECKSUM_ENABLE __BIT(17)
342 1.1 matt #define CONFIG0_RGMII_INBAND_STATUS_ENABLE __BIT(16)
343 1.1 matt #define CONFIG0_TX_FLOWCTL_ENABLE __BIT(15)
344 1.1 matt #define CONFIG0_RX_FLOWCTL_ENABLE __BIT(14)
345 1.1 matt #define CONFIG0_SIM_TEST __BIT(13)
346 1.1 matt #define CONFIG0_BACKOFF_MASK __BITS(11,12)
347 1.1 matt #define CONFIG0_BACKOFF_GET(x) (((x) >> 11) & CONFIG0_BACKOFF_MASK)
348 1.1 matt #define CONFIG0_BACKOFF(x) (((x) & CONFIG0_BACKOFF_MASK) << 11)
349 1.1 matt #define CONFIG0_BACKOFF_NORMAL 0
350 1.1 matt #define CONFIG0_BACKOFF_2X 1
351 1.1 matt #define CONFIG0_BACKOFF_4X 2
352 1.1 matt #define CONFIG0_BACKOFF_DISABLE 3
353 1.1 matt #define CONFIG0_MAXLEN_MASK __BITS(8,10)
354 1.1 matt #define CONFIG0_MAXLEN_GET(x) (((x) >> 8) & CONFIG0_MAXLEN_MASK)
355 1.1 matt #define CONFIG0_MAXLEN(x) (((x) & CONFIG0_MAXLEN_MASK) << 8)
356 1.1 matt #define CONFIG0_MAXLEN_1536 0
357 1.1 matt #define CONFIG0_MAXLEN_1518 1
358 1.1 matt #define CONFIG0_MAXLEN_1522 2
359 1.1 matt #define CONFIG0_MAXLEN_1548 3
360 1.1 matt #define CONFIG0_MAXLEN_JUMBO 4
361 1.1 matt #define CONFIG0_IFG_ADJUST_MASK __BITS(4,7)
362 1.1 matt #define CONFIG0_IFG_ADJUST_GET(x) (((x) >> 4) & CONFIG0_IFG_ADJUST_MASK)
363 1.1 matt #define CONFIG0_IFG_ADJUST(x) (((x) & CONFIG0_IFG_ADJUST_MASK) << 4)
364 1.1 matt #define CONFIG0_DROP_16COLL_ENABLE __BIT(3)
365 1.1 matt #define CONFIG0_LOOPBACK __BIT(2)
366 1.1 matt #define CONFIG0_RX_DISABLE __BIT(1)
367 1.1 matt #define CONFIG0_TX_DISABLE __BIT(0)
368 1.1 matt
369 1.1 matt #define GMAC_STATUS 0x002c
370 1.1 matt #define STATUS_PHYMODE_MASK __BITS(5,6)
371 1.1 matt #define STATUS_PHYMODE_MII (0 << 5)
372 1.1 matt #define STATUS_PHYMODE_GMII (1 << 5)
373 1.1 matt #define STATUS_PHYMODE_RGMII_A (2 << 5)
374 1.1 matt #define STATUS_PHYMODE_RGMII_B (3 << 5)
375 1.1 matt #define STATUS_DUPLEX_FULL __BIT(3)
376 1.1 matt #define STATUS_SPEED_MASK __BITS(1,2)
377 1.1 matt #define STATUS_SPEED_10M (0 << 1)
378 1.1 matt #define STATUS_SPEED_100M (1 << 1)
379 1.1 matt #define STATUS_SPEED_1000M (2 << 1)
380 1.1 matt #define STATUS_LINK_ON __BIT(0)
381 1.1 matt
382 1.1 matt #define DESC0_DROP __BIT(31)
383 1.1 matt #define DESC0_DERR __BIT(30)
384 1.1 matt #define DESC0_PERR __BIT(29)
385 1.1 matt #define DESC0_STATUS __BITS(22, 28)
386 1.1 matt #define DESC0_DESC_CNT __BITS(16, 21)
387 1.1 matt #define DESC0_BUF_SIZE __BITS(0, 15)
388 1.1 matt
389 1.1 matt #define DESC0_RXCSUMSTS_GET(x) (((x) >> 26) & 7)
390 1.1 matt #define DESC0_RXCSUMSTS_IPALL_OK 0 /* IP Hdr OK & TCP/UDP OK */
391 1.1 matt #define DESC0_RXCSUMSTS_IPHDR_OK 1 /* IP Hdr OK (!TCP/UDP) */
392 1.1 matt #define DESC0_RXCSUMSTS_NOTIP 2 /* Not an IP PKT */
393 1.1 matt #define DESC0_RXCSUMSTS_INVALID 3 /* Invalid PKT */
394 1.1 matt #define DESC0_RXCSUMSTS__RSVR4 4
395 1.1 matt #define DESC0_RXCSUMSTS_IPHDR_BAD 5 /* IP Hdr BAD */
396 1.1 matt #define DESC0_RXCSUMSTS_IPPAY_BAD 6 /* IP Hdr OK, TDP/UDP BAD */
397 1.1 matt #define DESC0_RXCSUMSTS__RSVR7 7
398 1.1 matt
399 1.1 matt #define DESC0_RXSTS_GET(x) (((x) >> 22) & 15)
400 1.1 matt #define DESC0_RXSTS_GOOD 0 /* good frame */
401 1.1 matt #define DESC0_RXSTS_LONG 1 /* long frame (CRC OK) */
402 1.1 matt #define DESC0_RXSTS_RUNT 2 /* runt frame */
403 1.1 matt #define DESC0_RXSTS_NOSFD 3 /* SFD not found */
404 1.1 matt #define DESC0_RXSTS_BADCRC 4 /* bad CRC */
405 1.1 matt #define DESC0_RXSTS_LONG_BADCRC 5 /* Too long with bad CRC */
406 1.1 matt #define DESC0_RXSTS_BADALIGN 6 /* Alignment error */
407 1.1 matt #define DESC0_RXSTS_ALLBAD 7 /* Long & bad CRC & Align Err */
408 1.1 matt #define DESC0_RXSTS_PAUSE 8 /* Pause Frame received */
409 1.1 matt #define DESC0_RXSTS_RX_ER 9 /* RX_ER Error detected */
410 1.1 matt #define DESC0_RXSTS_ADDR_FILTER 10 /* DA is not matched */
411 1.1 matt #define DESC0_RXSTS_OVERRUN 11 /* RX FIFO Overrun */
412 1.1 matt
413 1.1 matt #define DESC0_TXSTS_OK __BIT(22) /* TX successful */
414 1.1 matt
415 1.1 matt #define DESC1_RX_SWID __BITS(16, 31)
416 1.1 matt #define DESC1_TX_FLAG __BITS(16, 31)
417 1.1 matt #define DESC1_BUFLEN __BITS(0, 15)
418 1.1 matt
419 1.1 matt #define DESC1_TX_IPLEN_FIXED __BITS(22) /* IPLEN is fixed */
420 1.1 matt #define DESC1_TX_TSS_BYPASS __BITS(21) /* TSS Bypass */
421 1.1 matt #define DESC1_TX_UDP_CSUM_EN __BITS(20) /* Calc UDP CSUM */
422 1.1 matt #define DESC1_TX_TCP_CSUM_EN __BITS(19) /* Calc TCP CSUM */
423 1.1 matt #define DESC1_TX_IPV6_EN __BITS(18) /* Calc UDP CSUM */
424 1.1 matt #define DESC1_TX_IPV4_CSUM_EN __BITS(17) /* Calc IP HDR CSUM */
425 1.1 matt #define DESC1_TX_SEG_OFFLOAD_EN __BITS(16) /* TSS Bypass */
426 1.1 matt
427 1.1 matt #define DESC2_BUFADDR __BITS(2,31)
428 1.1 matt
429 1.1 matt #define DESC3_SOF __BIT(31)
430 1.1 matt #define DESC3_EOF __BIT(30)
431 1.1 matt #define DESC3_EOFIE __BIT(29)
432 1.1 matt
433 1.1 matt #define DESC3_RX_CTL __BIT(28)
434 1.1 matt #define DESC3_RX_OSQ __BIT(27)
435 1.1 matt #define DESC3_RX_OPT __BIT(26)
436 1.1 matt #define DESC3_RX_ABN __BIT(25)
437 1.1 matt #define DESC3_RX_DACK __BIT(24)
438 1.1 matt #define DESC3_RX_L3_OFF __BITS(16, 32)
439 1.1 matt #define DESC3_RX_L4_OFF __BITS(8, 15)
440 1.1 matt #define DESC3_RX_L7_OFF __BITS(0, 7)
441 1.1 matt
442 1.1 matt #define DESC3_TX_TSS_MTU __BITS(0, 10)
443 1.1 matt
444 1.1 matt typedef struct {
445 1.1 matt volatile uint32_t d_desc0;
446 1.1 matt volatile uint32_t d_desc1;
447 1.1 matt uint32_t d_bufaddr;
448 1.1 matt volatile uint32_t d_desc3;
449 1.1 matt } gmac_desc_t;
450 1.1 matt
451 1.1 matt #endif /* _ARM_GEMINI_GEMINI_GMACREG_H */
452