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__ */
745

source code of linux/drivers/net/ethernet/synopsys/dwc-xlgmac-reg.h