Linux Audio

Check our new training course

Loading...
v6.8
  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__ */
v6.2
  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__ */