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