Linux-libre 4.14.44-gnu
[librecmc/linux-libre.git] / drivers / net / ethernet / synopsys / dwc-xlgmac-reg.h
1 /* Synopsys DesignWare Core Enterprise Ethernet (XLGMAC) Driver
2  *
3  * Copyright (c) 2017 Synopsys, Inc. (www.synopsys.com)
4  *
5  * This program is dual-licensed; you may select either version 2 of
6  * the GNU General Public License ("GPL") or BSD license ("BSD").
7  *
8  * This Synopsys DWC XLGMAC software driver and associated documentation
9  * (hereinafter the "Software") is an unsupported proprietary work of
10  * Synopsys, Inc. unless otherwise expressly agreed to in writing between
11  * Synopsys and you. The Software IS NOT an item of Licensed Software or a
12  * Licensed Product under any End User Software License Agreement or
13  * Agreement for Licensed Products with Synopsys or any supplement thereto.
14  * Synopsys is a registered trademark of Synopsys, Inc. Other names included
15  * in the SOFTWARE may be the trademarks of their respective owners.
16  */
17
18 #ifndef __DWC_XLGMAC_REG_H__
19 #define __DWC_XLGMAC_REG_H__
20
21 /* MAC register offsets */
22 #define MAC_TCR                         0x0000
23 #define MAC_RCR                         0x0004
24 #define MAC_PFR                         0x0008
25 #define MAC_HTR0                        0x0010
26 #define MAC_VLANTR                      0x0050
27 #define MAC_VLANHTR                     0x0058
28 #define MAC_VLANIR                      0x0060
29 #define MAC_Q0TFCR                      0x0070
30 #define MAC_RFCR                        0x0090
31 #define MAC_RQC0R                       0x00a0
32 #define MAC_RQC1R                       0x00a4
33 #define MAC_RQC2R                       0x00a8
34 #define MAC_RQC3R                       0x00ac
35 #define MAC_ISR                         0x00b0
36 #define MAC_IER                         0x00b4
37 #define MAC_VR                          0x0110
38 #define MAC_HWF0R                       0x011c
39 #define MAC_HWF1R                       0x0120
40 #define MAC_HWF2R                       0x0124
41 #define MAC_MACA0HR                     0x0300
42 #define MAC_MACA0LR                     0x0304
43 #define MAC_MACA1HR                     0x0308
44 #define MAC_MACA1LR                     0x030c
45 #define MAC_RSSCR                       0x0c80
46 #define MAC_RSSAR                       0x0c88
47 #define MAC_RSSDR                       0x0c8c
48
49 #define MAC_QTFCR_INC                   4
50 #define MAC_MACA_INC                    4
51 #define MAC_HTR_INC                     4
52 #define MAC_RQC2_INC                    4
53 #define MAC_RQC2_Q_PER_REG              4
54
55 /* MAC register entry bit positions and sizes */
56 #define MAC_HWF0R_ADDMACADRSEL_POS      18
57 #define MAC_HWF0R_ADDMACADRSEL_LEN      5
58 #define MAC_HWF0R_ARPOFFSEL_POS         9
59 #define MAC_HWF0R_ARPOFFSEL_LEN         1
60 #define MAC_HWF0R_EEESEL_POS            13
61 #define MAC_HWF0R_EEESEL_LEN            1
62 #define MAC_HWF0R_PHYIFSEL_POS          1
63 #define MAC_HWF0R_PHYIFSEL_LEN          2
64 #define MAC_HWF0R_MGKSEL_POS            7
65 #define MAC_HWF0R_MGKSEL_LEN            1
66 #define MAC_HWF0R_MMCSEL_POS            8
67 #define MAC_HWF0R_MMCSEL_LEN            1
68 #define MAC_HWF0R_RWKSEL_POS            6
69 #define MAC_HWF0R_RWKSEL_LEN            1
70 #define MAC_HWF0R_RXCOESEL_POS          16
71 #define MAC_HWF0R_RXCOESEL_LEN          1
72 #define MAC_HWF0R_SAVLANINS_POS         27
73 #define MAC_HWF0R_SAVLANINS_LEN         1
74 #define MAC_HWF0R_SMASEL_POS            5
75 #define MAC_HWF0R_SMASEL_LEN            1
76 #define MAC_HWF0R_TSSEL_POS             12
77 #define MAC_HWF0R_TSSEL_LEN             1
78 #define MAC_HWF0R_TSSTSSEL_POS          25
79 #define MAC_HWF0R_TSSTSSEL_LEN          2
80 #define MAC_HWF0R_TXCOESEL_POS          14
81 #define MAC_HWF0R_TXCOESEL_LEN          1
82 #define MAC_HWF0R_VLHASH_POS            4
83 #define MAC_HWF0R_VLHASH_LEN            1
84 #define MAC_HWF1R_ADDR64_POS            14
85 #define MAC_HWF1R_ADDR64_LEN            2
86 #define MAC_HWF1R_ADVTHWORD_POS         13
87 #define MAC_HWF1R_ADVTHWORD_LEN         1
88 #define MAC_HWF1R_DBGMEMA_POS           19
89 #define MAC_HWF1R_DBGMEMA_LEN           1
90 #define MAC_HWF1R_DCBEN_POS             16
91 #define MAC_HWF1R_DCBEN_LEN             1
92 #define MAC_HWF1R_HASHTBLSZ_POS         24
93 #define MAC_HWF1R_HASHTBLSZ_LEN         3
94 #define MAC_HWF1R_L3L4FNUM_POS          27
95 #define MAC_HWF1R_L3L4FNUM_LEN          4
96 #define MAC_HWF1R_NUMTC_POS             21
97 #define MAC_HWF1R_NUMTC_LEN             3
98 #define MAC_HWF1R_RSSEN_POS             20
99 #define MAC_HWF1R_RSSEN_LEN             1
100 #define MAC_HWF1R_RXFIFOSIZE_POS        0
101 #define MAC_HWF1R_RXFIFOSIZE_LEN        5
102 #define MAC_HWF1R_SPHEN_POS             17
103 #define MAC_HWF1R_SPHEN_LEN             1
104 #define MAC_HWF1R_TSOEN_POS             18
105 #define MAC_HWF1R_TSOEN_LEN             1
106 #define MAC_HWF1R_TXFIFOSIZE_POS        6
107 #define MAC_HWF1R_TXFIFOSIZE_LEN        5
108 #define MAC_HWF2R_AUXSNAPNUM_POS        28
109 #define MAC_HWF2R_AUXSNAPNUM_LEN        3
110 #define MAC_HWF2R_PPSOUTNUM_POS         24
111 #define MAC_HWF2R_PPSOUTNUM_LEN         3
112 #define MAC_HWF2R_RXCHCNT_POS           12
113 #define MAC_HWF2R_RXCHCNT_LEN           4
114 #define MAC_HWF2R_RXQCNT_POS            0
115 #define MAC_HWF2R_RXQCNT_LEN            4
116 #define MAC_HWF2R_TXCHCNT_POS           18
117 #define MAC_HWF2R_TXCHCNT_LEN           4
118 #define MAC_HWF2R_TXQCNT_POS            6
119 #define MAC_HWF2R_TXQCNT_LEN            4
120 #define MAC_IER_TSIE_POS                12
121 #define MAC_IER_TSIE_LEN                1
122 #define MAC_ISR_MMCRXIS_POS             9
123 #define MAC_ISR_MMCRXIS_LEN             1
124 #define MAC_ISR_MMCTXIS_POS             10
125 #define MAC_ISR_MMCTXIS_LEN             1
126 #define MAC_ISR_PMTIS_POS               4
127 #define MAC_ISR_PMTIS_LEN               1
128 #define MAC_ISR_TSIS_POS                12
129 #define MAC_ISR_TSIS_LEN                1
130 #define MAC_MACA1HR_AE_POS              31
131 #define MAC_MACA1HR_AE_LEN              1
132 #define MAC_PFR_HMC_POS                 2
133 #define MAC_PFR_HMC_LEN                 1
134 #define MAC_PFR_HPF_POS                 10
135 #define MAC_PFR_HPF_LEN                 1
136 #define MAC_PFR_HUC_POS                 1
137 #define MAC_PFR_HUC_LEN                 1
138 #define MAC_PFR_PM_POS                  4
139 #define MAC_PFR_PM_LEN                  1
140 #define MAC_PFR_PR_POS                  0
141 #define MAC_PFR_PR_LEN                  1
142 #define MAC_PFR_VTFE_POS                16
143 #define MAC_PFR_VTFE_LEN                1
144 #define MAC_Q0TFCR_PT_POS               16
145 #define MAC_Q0TFCR_PT_LEN               16
146 #define MAC_Q0TFCR_TFE_POS              1
147 #define MAC_Q0TFCR_TFE_LEN              1
148 #define MAC_RCR_ACS_POS                 1
149 #define MAC_RCR_ACS_LEN                 1
150 #define MAC_RCR_CST_POS                 2
151 #define MAC_RCR_CST_LEN                 1
152 #define MAC_RCR_DCRCC_POS               3
153 #define MAC_RCR_DCRCC_LEN               1
154 #define MAC_RCR_HDSMS_POS               12
155 #define MAC_RCR_HDSMS_LEN               3
156 #define MAC_RCR_IPC_POS                 9
157 #define MAC_RCR_IPC_LEN                 1
158 #define MAC_RCR_JE_POS                  8
159 #define MAC_RCR_JE_LEN                  1
160 #define MAC_RCR_LM_POS                  10
161 #define MAC_RCR_LM_LEN                  1
162 #define MAC_RCR_RE_POS                  0
163 #define MAC_RCR_RE_LEN                  1
164 #define MAC_RFCR_PFCE_POS               8
165 #define MAC_RFCR_PFCE_LEN               1
166 #define MAC_RFCR_RFE_POS                0
167 #define MAC_RFCR_RFE_LEN                1
168 #define MAC_RFCR_UP_POS                 1
169 #define MAC_RFCR_UP_LEN                 1
170 #define MAC_RQC0R_RXQ0EN_POS            0
171 #define MAC_RQC0R_RXQ0EN_LEN            2
172 #define MAC_RSSAR_ADDRT_POS             2
173 #define MAC_RSSAR_ADDRT_LEN             1
174 #define MAC_RSSAR_CT_POS                1
175 #define MAC_RSSAR_CT_LEN                1
176 #define MAC_RSSAR_OB_POS                0
177 #define MAC_RSSAR_OB_LEN                1
178 #define MAC_RSSAR_RSSIA_POS             8
179 #define MAC_RSSAR_RSSIA_LEN             8
180 #define MAC_RSSCR_IP2TE_POS             1
181 #define MAC_RSSCR_IP2TE_LEN             1
182 #define MAC_RSSCR_RSSE_POS              0
183 #define MAC_RSSCR_RSSE_LEN              1
184 #define MAC_RSSCR_TCP4TE_POS            2
185 #define MAC_RSSCR_TCP4TE_LEN            1
186 #define MAC_RSSCR_UDP4TE_POS            3
187 #define MAC_RSSCR_UDP4TE_LEN            1
188 #define MAC_RSSDR_DMCH_POS              0
189 #define MAC_RSSDR_DMCH_LEN              4
190 #define MAC_TCR_SS_POS                  28
191 #define MAC_TCR_SS_LEN                  3
192 #define MAC_TCR_TE_POS                  0
193 #define MAC_TCR_TE_LEN                  1
194 #define MAC_VLANHTR_VLHT_POS            0
195 #define MAC_VLANHTR_VLHT_LEN            16
196 #define MAC_VLANIR_VLTI_POS             20
197 #define MAC_VLANIR_VLTI_LEN             1
198 #define MAC_VLANIR_CSVL_POS             19
199 #define MAC_VLANIR_CSVL_LEN             1
200 #define MAC_VLANTR_DOVLTC_POS           20
201 #define MAC_VLANTR_DOVLTC_LEN           1
202 #define MAC_VLANTR_ERSVLM_POS           19
203 #define MAC_VLANTR_ERSVLM_LEN           1
204 #define MAC_VLANTR_ESVL_POS             18
205 #define MAC_VLANTR_ESVL_LEN             1
206 #define MAC_VLANTR_ETV_POS              16
207 #define MAC_VLANTR_ETV_LEN              1
208 #define MAC_VLANTR_EVLS_POS             21
209 #define MAC_VLANTR_EVLS_LEN             2
210 #define MAC_VLANTR_EVLRXS_POS           24
211 #define MAC_VLANTR_EVLRXS_LEN           1
212 #define MAC_VLANTR_VL_POS               0
213 #define MAC_VLANTR_VL_LEN               16
214 #define MAC_VLANTR_VTHM_POS             25
215 #define MAC_VLANTR_VTHM_LEN             1
216 #define MAC_VLANTR_VTIM_POS             17
217 #define MAC_VLANTR_VTIM_LEN             1
218 #define MAC_VR_DEVID_POS                8
219 #define MAC_VR_DEVID_LEN                8
220 #define MAC_VR_SNPSVER_POS              0
221 #define MAC_VR_SNPSVER_LEN              8
222 #define MAC_VR_USERVER_POS              16
223 #define MAC_VR_USERVER_LEN              8
224
225 /* MMC register offsets */
226 #define MMC_CR                          0x0800
227 #define MMC_RISR                        0x0804
228 #define MMC_TISR                        0x0808
229 #define MMC_RIER                        0x080c
230 #define MMC_TIER                        0x0810
231 #define MMC_TXOCTETCOUNT_GB_LO          0x0814
232 #define MMC_TXFRAMECOUNT_GB_LO          0x081c
233 #define MMC_TXBROADCASTFRAMES_G_LO      0x0824
234 #define MMC_TXMULTICASTFRAMES_G_LO      0x082c
235 #define MMC_TX64OCTETS_GB_LO            0x0834
236 #define MMC_TX65TO127OCTETS_GB_LO       0x083c
237 #define MMC_TX128TO255OCTETS_GB_LO      0x0844
238 #define MMC_TX256TO511OCTETS_GB_LO      0x084c
239 #define MMC_TX512TO1023OCTETS_GB_LO     0x0854
240 #define MMC_TX1024TOMAXOCTETS_GB_LO     0x085c
241 #define MMC_TXUNICASTFRAMES_GB_LO       0x0864
242 #define MMC_TXMULTICASTFRAMES_GB_LO     0x086c
243 #define MMC_TXBROADCASTFRAMES_GB_LO     0x0874
244 #define MMC_TXUNDERFLOWERROR_LO         0x087c
245 #define MMC_TXOCTETCOUNT_G_LO           0x0884
246 #define MMC_TXFRAMECOUNT_G_LO           0x088c
247 #define MMC_TXPAUSEFRAMES_LO            0x0894
248 #define MMC_TXVLANFRAMES_G_LO           0x089c
249 #define MMC_RXFRAMECOUNT_GB_LO          0x0900
250 #define MMC_RXOCTETCOUNT_GB_LO          0x0908
251 #define MMC_RXOCTETCOUNT_G_LO           0x0910
252 #define MMC_RXBROADCASTFRAMES_G_LO      0x0918
253 #define MMC_RXMULTICASTFRAMES_G_LO      0x0920
254 #define MMC_RXCRCERROR_LO               0x0928
255 #define MMC_RXRUNTERROR                 0x0930
256 #define MMC_RXJABBERERROR               0x0934
257 #define MMC_RXUNDERSIZE_G               0x0938
258 #define MMC_RXOVERSIZE_G                0x093c
259 #define MMC_RX64OCTETS_GB_LO            0x0940
260 #define MMC_RX65TO127OCTETS_GB_LO       0x0948
261 #define MMC_RX128TO255OCTETS_GB_LO      0x0950
262 #define MMC_RX256TO511OCTETS_GB_LO      0x0958
263 #define MMC_RX512TO1023OCTETS_GB_LO     0x0960
264 #define MMC_RX1024TOMAXOCTETS_GB_LO     0x0968
265 #define MMC_RXUNICASTFRAMES_G_LO        0x0970
266 #define MMC_RXLENGTHERROR_LO            0x0978
267 #define MMC_RXOUTOFRANGETYPE_LO         0x0980
268 #define MMC_RXPAUSEFRAMES_LO            0x0988
269 #define MMC_RXFIFOOVERFLOW_LO           0x0990
270 #define MMC_RXVLANFRAMES_GB_LO          0x0998
271 #define MMC_RXWATCHDOGERROR             0x09a0
272
273 /* MMC register entry bit positions and sizes */
274 #define MMC_CR_CR_POS                           0
275 #define MMC_CR_CR_LEN                           1
276 #define MMC_CR_CSR_POS                          1
277 #define MMC_CR_CSR_LEN                          1
278 #define MMC_CR_ROR_POS                          2
279 #define MMC_CR_ROR_LEN                          1
280 #define MMC_CR_MCF_POS                          3
281 #define MMC_CR_MCF_LEN                          1
282 #define MMC_CR_MCT_POS                          4
283 #define MMC_CR_MCT_LEN                          2
284 #define MMC_RIER_ALL_INTERRUPTS_POS             0
285 #define MMC_RIER_ALL_INTERRUPTS_LEN             23
286 #define MMC_RISR_RXFRAMECOUNT_GB_POS            0
287 #define MMC_RISR_RXFRAMECOUNT_GB_LEN            1
288 #define MMC_RISR_RXOCTETCOUNT_GB_POS            1
289 #define MMC_RISR_RXOCTETCOUNT_GB_LEN            1
290 #define MMC_RISR_RXOCTETCOUNT_G_POS             2
291 #define MMC_RISR_RXOCTETCOUNT_G_LEN             1
292 #define MMC_RISR_RXBROADCASTFRAMES_G_POS        3
293 #define MMC_RISR_RXBROADCASTFRAMES_G_LEN        1
294 #define MMC_RISR_RXMULTICASTFRAMES_G_POS        4
295 #define MMC_RISR_RXMULTICASTFRAMES_G_LEN        1
296 #define MMC_RISR_RXCRCERROR_POS                 5
297 #define MMC_RISR_RXCRCERROR_LEN                 1
298 #define MMC_RISR_RXRUNTERROR_POS                6
299 #define MMC_RISR_RXRUNTERROR_LEN                1
300 #define MMC_RISR_RXJABBERERROR_POS              7
301 #define MMC_RISR_RXJABBERERROR_LEN              1
302 #define MMC_RISR_RXUNDERSIZE_G_POS              8
303 #define MMC_RISR_RXUNDERSIZE_G_LEN              1
304 #define MMC_RISR_RXOVERSIZE_G_POS               9
305 #define MMC_RISR_RXOVERSIZE_G_LEN               1
306 #define MMC_RISR_RX64OCTETS_GB_POS              10
307 #define MMC_RISR_RX64OCTETS_GB_LEN              1
308 #define MMC_RISR_RX65TO127OCTETS_GB_POS         11
309 #define MMC_RISR_RX65TO127OCTETS_GB_LEN         1
310 #define MMC_RISR_RX128TO255OCTETS_GB_POS        12
311 #define MMC_RISR_RX128TO255OCTETS_GB_LEN        1
312 #define MMC_RISR_RX256TO511OCTETS_GB_POS        13
313 #define MMC_RISR_RX256TO511OCTETS_GB_LEN        1
314 #define MMC_RISR_RX512TO1023OCTETS_GB_POS       14
315 #define MMC_RISR_RX512TO1023OCTETS_GB_LEN       1
316 #define MMC_RISR_RX1024TOMAXOCTETS_GB_POS       15
317 #define MMC_RISR_RX1024TOMAXOCTETS_GB_LEN       1
318 #define MMC_RISR_RXUNICASTFRAMES_G_POS          16
319 #define MMC_RISR_RXUNICASTFRAMES_G_LEN          1
320 #define MMC_RISR_RXLENGTHERROR_POS              17
321 #define MMC_RISR_RXLENGTHERROR_LEN              1
322 #define MMC_RISR_RXOUTOFRANGETYPE_POS           18
323 #define MMC_RISR_RXOUTOFRANGETYPE_LEN           1
324 #define MMC_RISR_RXPAUSEFRAMES_POS              19
325 #define MMC_RISR_RXPAUSEFRAMES_LEN              1
326 #define MMC_RISR_RXFIFOOVERFLOW_POS             20
327 #define MMC_RISR_RXFIFOOVERFLOW_LEN             1
328 #define MMC_RISR_RXVLANFRAMES_GB_POS            21
329 #define MMC_RISR_RXVLANFRAMES_GB_LEN            1
330 #define MMC_RISR_RXWATCHDOGERROR_POS            22
331 #define MMC_RISR_RXWATCHDOGERROR_LEN            1
332 #define MMC_TIER_ALL_INTERRUPTS_POS             0
333 #define MMC_TIER_ALL_INTERRUPTS_LEN             18
334 #define MMC_TISR_TXOCTETCOUNT_GB_POS            0
335 #define MMC_TISR_TXOCTETCOUNT_GB_LEN            1
336 #define MMC_TISR_TXFRAMECOUNT_GB_POS            1
337 #define MMC_TISR_TXFRAMECOUNT_GB_LEN            1
338 #define MMC_TISR_TXBROADCASTFRAMES_G_POS        2
339 #define MMC_TISR_TXBROADCASTFRAMES_G_LEN        1
340 #define MMC_TISR_TXMULTICASTFRAMES_G_POS        3
341 #define MMC_TISR_TXMULTICASTFRAMES_G_LEN        1
342 #define MMC_TISR_TX64OCTETS_GB_POS              4
343 #define MMC_TISR_TX64OCTETS_GB_LEN              1
344 #define MMC_TISR_TX65TO127OCTETS_GB_POS         5
345 #define MMC_TISR_TX65TO127OCTETS_GB_LEN         1
346 #define MMC_TISR_TX128TO255OCTETS_GB_POS        6
347 #define MMC_TISR_TX128TO255OCTETS_GB_LEN        1
348 #define MMC_TISR_TX256TO511OCTETS_GB_POS        7
349 #define MMC_TISR_TX256TO511OCTETS_GB_LEN        1
350 #define MMC_TISR_TX512TO1023OCTETS_GB_POS       8
351 #define MMC_TISR_TX512TO1023OCTETS_GB_LEN       1
352 #define MMC_TISR_TX1024TOMAXOCTETS_GB_POS       9
353 #define MMC_TISR_TX1024TOMAXOCTETS_GB_LEN       1
354 #define MMC_TISR_TXUNICASTFRAMES_GB_POS         10
355 #define MMC_TISR_TXUNICASTFRAMES_GB_LEN         1
356 #define MMC_TISR_TXMULTICASTFRAMES_GB_POS       11
357 #define MMC_TISR_TXMULTICASTFRAMES_GB_LEN       1
358 #define MMC_TISR_TXBROADCASTFRAMES_GB_POS       12
359 #define MMC_TISR_TXBROADCASTFRAMES_GB_LEN       1
360 #define MMC_TISR_TXUNDERFLOWERROR_POS           13
361 #define MMC_TISR_TXUNDERFLOWERROR_LEN           1
362 #define MMC_TISR_TXOCTETCOUNT_G_POS             14
363 #define MMC_TISR_TXOCTETCOUNT_G_LEN             1
364 #define MMC_TISR_TXFRAMECOUNT_G_POS             15
365 #define MMC_TISR_TXFRAMECOUNT_G_LEN             1
366 #define MMC_TISR_TXPAUSEFRAMES_POS              16
367 #define MMC_TISR_TXPAUSEFRAMES_LEN              1
368 #define MMC_TISR_TXVLANFRAMES_G_POS             17
369 #define MMC_TISR_TXVLANFRAMES_G_LEN             1
370
371 /* MTL register offsets */
372 #define MTL_OMR                         0x1000
373 #define MTL_FDDR                        0x1010
374 #define MTL_RQDCM0R                     0x1030
375
376 #define MTL_RQDCM_INC                   4
377 #define MTL_RQDCM_Q_PER_REG             4
378
379 /* MTL register entry bit positions and sizes */
380 #define MTL_OMR_ETSALG_POS              5
381 #define MTL_OMR_ETSALG_LEN              2
382 #define MTL_OMR_RAA_POS                 2
383 #define MTL_OMR_RAA_LEN                 1
384
385 /* MTL queue register offsets
386  *   Multiple queues can be active.  The first queue has registers
387  *   that begin at 0x1100.  Each subsequent queue has registers that
388  *   are accessed using an offset of 0x80 from the previous queue.
389  */
390 #define MTL_Q_BASE                      0x1100
391 #define MTL_Q_INC                       0x80
392
393 #define MTL_Q_TQOMR                     0x00
394 #define MTL_Q_RQOMR                     0x40
395 #define MTL_Q_RQDR                      0x48
396 #define MTL_Q_RQFCR                     0x50
397 #define MTL_Q_IER                       0x70
398 #define MTL_Q_ISR                       0x74
399
400 /* MTL queue register entry bit positions and sizes */
401 #define MTL_Q_RQDR_PRXQ_POS             16
402 #define MTL_Q_RQDR_PRXQ_LEN             14
403 #define MTL_Q_RQDR_RXQSTS_POS           4
404 #define MTL_Q_RQDR_RXQSTS_LEN           2
405 #define MTL_Q_RQFCR_RFA_POS             1
406 #define MTL_Q_RQFCR_RFA_LEN             6
407 #define MTL_Q_RQFCR_RFD_POS             17
408 #define MTL_Q_RQFCR_RFD_LEN             6
409 #define MTL_Q_RQOMR_EHFC_POS            7
410 #define MTL_Q_RQOMR_EHFC_LEN            1
411 #define MTL_Q_RQOMR_RQS_POS             16
412 #define MTL_Q_RQOMR_RQS_LEN             9
413 #define MTL_Q_RQOMR_RSF_POS             5
414 #define MTL_Q_RQOMR_RSF_LEN             1
415 #define MTL_Q_RQOMR_FEP_POS             4
416 #define MTL_Q_RQOMR_FEP_LEN             1
417 #define MTL_Q_RQOMR_FUP_POS             3
418 #define MTL_Q_RQOMR_FUP_LEN             1
419 #define MTL_Q_RQOMR_RTC_POS             0
420 #define MTL_Q_RQOMR_RTC_LEN             2
421 #define MTL_Q_TQOMR_FTQ_POS             0
422 #define MTL_Q_TQOMR_FTQ_LEN             1
423 #define MTL_Q_TQOMR_Q2TCMAP_POS         8
424 #define MTL_Q_TQOMR_Q2TCMAP_LEN         3
425 #define MTL_Q_TQOMR_TQS_POS             16
426 #define MTL_Q_TQOMR_TQS_LEN             10
427 #define MTL_Q_TQOMR_TSF_POS             1
428 #define MTL_Q_TQOMR_TSF_LEN             1
429 #define MTL_Q_TQOMR_TTC_POS             4
430 #define MTL_Q_TQOMR_TTC_LEN             3
431 #define MTL_Q_TQOMR_TXQEN_POS           2
432 #define MTL_Q_TQOMR_TXQEN_LEN           2
433
434 /* MTL queue register value */
435 #define MTL_RSF_DISABLE                 0x00
436 #define MTL_RSF_ENABLE                  0x01
437 #define MTL_TSF_DISABLE                 0x00
438 #define MTL_TSF_ENABLE                  0x01
439
440 #define MTL_RX_THRESHOLD_64             0x00
441 #define MTL_RX_THRESHOLD_96             0x02
442 #define MTL_RX_THRESHOLD_128            0x03
443 #define MTL_TX_THRESHOLD_64             0x00
444 #define MTL_TX_THRESHOLD_96             0x02
445 #define MTL_TX_THRESHOLD_128            0x03
446 #define MTL_TX_THRESHOLD_192            0x04
447 #define MTL_TX_THRESHOLD_256            0x05
448 #define MTL_TX_THRESHOLD_384            0x06
449 #define MTL_TX_THRESHOLD_512            0x07
450
451 #define MTL_ETSALG_WRR                  0x00
452 #define MTL_ETSALG_WFQ                  0x01
453 #define MTL_ETSALG_DWRR                 0x02
454 #define MTL_RAA_SP                      0x00
455 #define MTL_RAA_WSP                     0x01
456
457 #define MTL_Q_DISABLED                  0x00
458 #define MTL_Q_ENABLED                   0x02
459
460 #define MTL_RQDCM0R_Q0MDMACH            0x0
461 #define MTL_RQDCM0R_Q1MDMACH            0x00000100
462 #define MTL_RQDCM0R_Q2MDMACH            0x00020000
463 #define MTL_RQDCM0R_Q3MDMACH            0x03000000
464 #define MTL_RQDCM1R_Q4MDMACH            0x00000004
465 #define MTL_RQDCM1R_Q5MDMACH            0x00000500
466 #define MTL_RQDCM1R_Q6MDMACH            0x00060000
467 #define MTL_RQDCM1R_Q7MDMACH            0x07000000
468 #define MTL_RQDCM2R_Q8MDMACH            0x00000008
469 #define MTL_RQDCM2R_Q9MDMACH            0x00000900
470 #define MTL_RQDCM2R_Q10MDMACH           0x000A0000
471 #define MTL_RQDCM2R_Q11MDMACH           0x0B000000
472
473 /* MTL traffic class register offsets
474  *   Multiple traffic classes can be active.  The first class has registers
475  *   that begin at 0x1100.  Each subsequent queue has registers that
476  *   are accessed using an offset of 0x80 from the previous queue.
477  */
478 #define MTL_TC_BASE                     MTL_Q_BASE
479 #define MTL_TC_INC                      MTL_Q_INC
480
481 #define MTL_TC_ETSCR                    0x10
482 #define MTL_TC_ETSSR                    0x14
483 #define MTL_TC_QWR                      0x18
484
485 /* MTL traffic class register entry bit positions and sizes */
486 #define MTL_TC_ETSCR_TSA_POS            0
487 #define MTL_TC_ETSCR_TSA_LEN            2
488 #define MTL_TC_QWR_QW_POS               0
489 #define MTL_TC_QWR_QW_LEN               21
490
491 /* MTL traffic class register value */
492 #define MTL_TSA_SP                      0x00
493 #define MTL_TSA_ETS                     0x02
494
495 /* DMA register offsets */
496 #define DMA_MR                          0x3000
497 #define DMA_SBMR                        0x3004
498 #define DMA_ISR                         0x3008
499 #define DMA_DSR0                        0x3020
500 #define DMA_DSR1                        0x3024
501
502 /* DMA register entry bit positions and sizes */
503 #define DMA_ISR_MACIS_POS               17
504 #define DMA_ISR_MACIS_LEN               1
505 #define DMA_ISR_MTLIS_POS               16
506 #define DMA_ISR_MTLIS_LEN               1
507 #define DMA_MR_SWR_POS                  0
508 #define DMA_MR_SWR_LEN                  1
509 #define DMA_SBMR_EAME_POS               11
510 #define DMA_SBMR_EAME_LEN               1
511 #define DMA_SBMR_BLEN_64_POS            5
512 #define DMA_SBMR_BLEN_64_LEN            1
513 #define DMA_SBMR_BLEN_128_POS           6
514 #define DMA_SBMR_BLEN_128_LEN           1
515 #define DMA_SBMR_BLEN_256_POS           7
516 #define DMA_SBMR_BLEN_256_LEN           1
517 #define DMA_SBMR_UNDEF_POS              0
518 #define DMA_SBMR_UNDEF_LEN              1
519
520 /* DMA register values */
521 #define DMA_DSR_RPS_LEN                 4
522 #define DMA_DSR_TPS_LEN                 4
523 #define DMA_DSR_Q_LEN                   (DMA_DSR_RPS_LEN + DMA_DSR_TPS_LEN)
524 #define DMA_DSR0_TPS_START              12
525 #define DMA_DSRX_FIRST_QUEUE            3
526 #define DMA_DSRX_INC                    4
527 #define DMA_DSRX_QPR                    4
528 #define DMA_DSRX_TPS_START              4
529 #define DMA_TPS_STOPPED                 0x00
530 #define DMA_TPS_SUSPENDED               0x06
531
532 /* DMA channel register offsets
533  *   Multiple channels can be active.  The first channel has registers
534  *   that begin at 0x3100.  Each subsequent channel has registers that
535  *   are accessed using an offset of 0x80 from the previous channel.
536  */
537 #define DMA_CH_BASE                     0x3100
538 #define DMA_CH_INC                      0x80
539
540 #define DMA_CH_CR                       0x00
541 #define DMA_CH_TCR                      0x04
542 #define DMA_CH_RCR                      0x08
543 #define DMA_CH_TDLR_HI                  0x10
544 #define DMA_CH_TDLR_LO                  0x14
545 #define DMA_CH_RDLR_HI                  0x18
546 #define DMA_CH_RDLR_LO                  0x1c
547 #define DMA_CH_TDTR_LO                  0x24
548 #define DMA_CH_RDTR_LO                  0x2c
549 #define DMA_CH_TDRLR                    0x30
550 #define DMA_CH_RDRLR                    0x34
551 #define DMA_CH_IER                      0x38
552 #define DMA_CH_RIWT                     0x3c
553 #define DMA_CH_SR                       0x60
554
555 /* DMA channel register entry bit positions and sizes */
556 #define DMA_CH_CR_PBLX8_POS             16
557 #define DMA_CH_CR_PBLX8_LEN             1
558 #define DMA_CH_CR_SPH_POS               24
559 #define DMA_CH_CR_SPH_LEN               1
560 #define DMA_CH_IER_AIE_POS              15
561 #define DMA_CH_IER_AIE_LEN              1
562 #define DMA_CH_IER_FBEE_POS             12
563 #define DMA_CH_IER_FBEE_LEN             1
564 #define DMA_CH_IER_NIE_POS              16
565 #define DMA_CH_IER_NIE_LEN              1
566 #define DMA_CH_IER_RBUE_POS             7
567 #define DMA_CH_IER_RBUE_LEN             1
568 #define DMA_CH_IER_RIE_POS              6
569 #define DMA_CH_IER_RIE_LEN              1
570 #define DMA_CH_IER_RSE_POS              8
571 #define DMA_CH_IER_RSE_LEN              1
572 #define DMA_CH_IER_TBUE_POS             2
573 #define DMA_CH_IER_TBUE_LEN             1
574 #define DMA_CH_IER_TIE_POS              0
575 #define DMA_CH_IER_TIE_LEN              1
576 #define DMA_CH_IER_TXSE_POS             1
577 #define DMA_CH_IER_TXSE_LEN             1
578 #define DMA_CH_RCR_PBL_POS              16
579 #define DMA_CH_RCR_PBL_LEN              6
580 #define DMA_CH_RCR_RBSZ_POS             1
581 #define DMA_CH_RCR_RBSZ_LEN             14
582 #define DMA_CH_RCR_SR_POS               0
583 #define DMA_CH_RCR_SR_LEN               1
584 #define DMA_CH_RIWT_RWT_POS             0
585 #define DMA_CH_RIWT_RWT_LEN             8
586 #define DMA_CH_SR_FBE_POS               12
587 #define DMA_CH_SR_FBE_LEN               1
588 #define DMA_CH_SR_RBU_POS               7
589 #define DMA_CH_SR_RBU_LEN               1
590 #define DMA_CH_SR_RI_POS                6
591 #define DMA_CH_SR_RI_LEN                1
592 #define DMA_CH_SR_RPS_POS               8
593 #define DMA_CH_SR_RPS_LEN               1
594 #define DMA_CH_SR_TBU_POS               2
595 #define DMA_CH_SR_TBU_LEN               1
596 #define DMA_CH_SR_TI_POS                0
597 #define DMA_CH_SR_TI_LEN                1
598 #define DMA_CH_SR_TPS_POS               1
599 #define DMA_CH_SR_TPS_LEN               1
600 #define DMA_CH_TCR_OSP_POS              4
601 #define DMA_CH_TCR_OSP_LEN              1
602 #define DMA_CH_TCR_PBL_POS              16
603 #define DMA_CH_TCR_PBL_LEN              6
604 #define DMA_CH_TCR_ST_POS               0
605 #define DMA_CH_TCR_ST_LEN               1
606 #define DMA_CH_TCR_TSE_POS              12
607 #define DMA_CH_TCR_TSE_LEN              1
608
609 /* DMA channel register values */
610 #define DMA_OSP_DISABLE                 0x00
611 #define DMA_OSP_ENABLE                  0x01
612 #define DMA_PBL_1                       1
613 #define DMA_PBL_2                       2
614 #define DMA_PBL_4                       4
615 #define DMA_PBL_8                       8
616 #define DMA_PBL_16                      16
617 #define DMA_PBL_32                      32
618 #define DMA_PBL_64                      64
619 #define DMA_PBL_128                     128
620 #define DMA_PBL_256                     256
621 #define DMA_PBL_X8_DISABLE              0x00
622 #define DMA_PBL_X8_ENABLE               0x01
623
624 /* Descriptor/Packet entry bit positions and sizes */
625 #define RX_PACKET_ERRORS_CRC_POS                2
626 #define RX_PACKET_ERRORS_CRC_LEN                1
627 #define RX_PACKET_ERRORS_FRAME_POS              3
628 #define RX_PACKET_ERRORS_FRAME_LEN              1
629 #define RX_PACKET_ERRORS_LENGTH_POS             0
630 #define RX_PACKET_ERRORS_LENGTH_LEN             1
631 #define RX_PACKET_ERRORS_OVERRUN_POS            1
632 #define RX_PACKET_ERRORS_OVERRUN_LEN            1
633
634 #define RX_PACKET_ATTRIBUTES_CSUM_DONE_POS      0
635 #define RX_PACKET_ATTRIBUTES_CSUM_DONE_LEN      1
636 #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_POS      1
637 #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_LEN      1
638 #define RX_PACKET_ATTRIBUTES_INCOMPLETE_POS     2
639 #define RX_PACKET_ATTRIBUTES_INCOMPLETE_LEN     1
640 #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_POS   3
641 #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_LEN   1
642 #define RX_PACKET_ATTRIBUTES_CONTEXT_POS        4
643 #define RX_PACKET_ATTRIBUTES_CONTEXT_LEN        1
644 #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_POS      5
645 #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_LEN      1
646 #define RX_PACKET_ATTRIBUTES_RSS_HASH_POS       6
647 #define RX_PACKET_ATTRIBUTES_RSS_HASH_LEN       1
648
649 #define RX_NORMAL_DESC0_OVT_POS                 0
650 #define RX_NORMAL_DESC0_OVT_LEN                 16
651 #define RX_NORMAL_DESC2_HL_POS                  0
652 #define RX_NORMAL_DESC2_HL_LEN                  10
653 #define RX_NORMAL_DESC3_CDA_POS                 27
654 #define RX_NORMAL_DESC3_CDA_LEN                 1
655 #define RX_NORMAL_DESC3_CTXT_POS                30
656 #define RX_NORMAL_DESC3_CTXT_LEN                1
657 #define RX_NORMAL_DESC3_ES_POS                  15
658 #define RX_NORMAL_DESC3_ES_LEN                  1
659 #define RX_NORMAL_DESC3_ETLT_POS                16
660 #define RX_NORMAL_DESC3_ETLT_LEN                4
661 #define RX_NORMAL_DESC3_FD_POS                  29
662 #define RX_NORMAL_DESC3_FD_LEN                  1
663 #define RX_NORMAL_DESC3_INTE_POS                30
664 #define RX_NORMAL_DESC3_INTE_LEN                1
665 #define RX_NORMAL_DESC3_L34T_POS                20
666 #define RX_NORMAL_DESC3_L34T_LEN                4
667 #define RX_NORMAL_DESC3_LD_POS                  28
668 #define RX_NORMAL_DESC3_LD_LEN                  1
669 #define RX_NORMAL_DESC3_OWN_POS                 31
670 #define RX_NORMAL_DESC3_OWN_LEN                 1
671 #define RX_NORMAL_DESC3_PL_POS                  0
672 #define RX_NORMAL_DESC3_PL_LEN                  14
673 #define RX_NORMAL_DESC3_RSV_POS                 26
674 #define RX_NORMAL_DESC3_RSV_LEN                 1
675
676 #define RX_DESC3_L34T_IPV4_TCP                  1
677 #define RX_DESC3_L34T_IPV4_UDP                  2
678 #define RX_DESC3_L34T_IPV4_ICMP                 3
679 #define RX_DESC3_L34T_IPV6_TCP                  9
680 #define RX_DESC3_L34T_IPV6_UDP                  10
681 #define RX_DESC3_L34T_IPV6_ICMP                 11
682
683 #define RX_CONTEXT_DESC3_TSA_POS                4
684 #define RX_CONTEXT_DESC3_TSA_LEN                1
685 #define RX_CONTEXT_DESC3_TSD_POS                6
686 #define RX_CONTEXT_DESC3_TSD_LEN                1
687
688 #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_POS    0
689 #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_LEN    1
690 #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_POS     1
691 #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_LEN     1
692 #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_POS      2
693 #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_LEN      1
694 #define TX_PACKET_ATTRIBUTES_PTP_POS            3
695 #define TX_PACKET_ATTRIBUTES_PTP_LEN            1
696
697 #define TX_CONTEXT_DESC2_MSS_POS                0
698 #define TX_CONTEXT_DESC2_MSS_LEN                15
699 #define TX_CONTEXT_DESC3_CTXT_POS               30
700 #define TX_CONTEXT_DESC3_CTXT_LEN               1
701 #define TX_CONTEXT_DESC3_TCMSSV_POS             26
702 #define TX_CONTEXT_DESC3_TCMSSV_LEN             1
703 #define TX_CONTEXT_DESC3_VLTV_POS               16
704 #define TX_CONTEXT_DESC3_VLTV_LEN               1
705 #define TX_CONTEXT_DESC3_VT_POS                 0
706 #define TX_CONTEXT_DESC3_VT_LEN                 16
707
708 #define TX_NORMAL_DESC2_HL_B1L_POS              0
709 #define TX_NORMAL_DESC2_HL_B1L_LEN              14
710 #define TX_NORMAL_DESC2_IC_POS                  31
711 #define TX_NORMAL_DESC2_IC_LEN                  1
712 #define TX_NORMAL_DESC2_TTSE_POS                30
713 #define TX_NORMAL_DESC2_TTSE_LEN                1
714 #define TX_NORMAL_DESC2_VTIR_POS                14
715 #define TX_NORMAL_DESC2_VTIR_LEN                2
716 #define TX_NORMAL_DESC3_CIC_POS                 16
717 #define TX_NORMAL_DESC3_CIC_LEN                 2
718 #define TX_NORMAL_DESC3_CPC_POS                 26
719 #define TX_NORMAL_DESC3_CPC_LEN                 2
720 #define TX_NORMAL_DESC3_CTXT_POS                30
721 #define TX_NORMAL_DESC3_CTXT_LEN                1
722 #define TX_NORMAL_DESC3_FD_POS                  29
723 #define TX_NORMAL_DESC3_FD_LEN                  1
724 #define TX_NORMAL_DESC3_FL_POS                  0
725 #define TX_NORMAL_DESC3_FL_LEN                  15
726 #define TX_NORMAL_DESC3_LD_POS                  28
727 #define TX_NORMAL_DESC3_LD_LEN                  1
728 #define TX_NORMAL_DESC3_OWN_POS                 31
729 #define TX_NORMAL_DESC3_OWN_LEN                 1
730 #define TX_NORMAL_DESC3_TCPHDRLEN_POS           19
731 #define TX_NORMAL_DESC3_TCPHDRLEN_LEN           4
732 #define TX_NORMAL_DESC3_TCPPL_POS               0
733 #define TX_NORMAL_DESC3_TCPPL_LEN               18
734 #define TX_NORMAL_DESC3_TSE_POS                 18
735 #define TX_NORMAL_DESC3_TSE_LEN                 1
736
737 #define TX_NORMAL_DESC2_VLAN_INSERT             0x2
738
739 #define XLGMAC_MTL_REG(pdata, n, reg)                                   \
740         ((pdata)->mac_regs + MTL_Q_BASE + ((n) * MTL_Q_INC) + (reg))
741
742 #define XLGMAC_DMA_REG(channel, reg)    ((channel)->dma_regs + (reg))
743
744 #endif /* __DWC_XLGMAC_REG_H__ */