xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/sibyte/sb1250_dma.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*  *********************************************************************
3*4882a593Smuzhiyun     *  SB1250 Board Support Package
4*4882a593Smuzhiyun     *
5*4882a593Smuzhiyun     *  DMA definitions				File: sb1250_dma.h
6*4882a593Smuzhiyun     *
7*4882a593Smuzhiyun     *  This module contains constants and macros useful for
8*4882a593Smuzhiyun     *  programming the SB1250's DMA controllers, both the data mover
9*4882a593Smuzhiyun     *  and the Ethernet DMA.
10*4882a593Smuzhiyun     *
11*4882a593Smuzhiyun     *  SB1250 specification level:  User's manual 10/21/02
12*4882a593Smuzhiyun     *  BCM1280 specification level: User's manual 11/24/03
13*4882a593Smuzhiyun     *
14*4882a593Smuzhiyun     *********************************************************************
15*4882a593Smuzhiyun     *
16*4882a593Smuzhiyun     *  Copyright 2000,2001,2002,2003
17*4882a593Smuzhiyun     *  Broadcom Corporation. All rights reserved.
18*4882a593Smuzhiyun     *
19*4882a593Smuzhiyun     ********************************************************************* */
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #ifndef _SB1250_DMA_H
23*4882a593Smuzhiyun #define _SB1250_DMA_H
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h>
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /*  *********************************************************************
29*4882a593Smuzhiyun     *  DMA Registers
30*4882a593Smuzhiyun     ********************************************************************* */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /*
33*4882a593Smuzhiyun  * Ethernet and Serial DMA Configuration Register 0  (Table 7-4)
34*4882a593Smuzhiyun  * Registers: DMA_CONFIG0_MAC_x_RX_CH_0
35*4882a593Smuzhiyun  * Registers: DMA_CONFIG0_MAC_x_TX_CH_0
36*4882a593Smuzhiyun  * Registers: DMA_CONFIG0_SER_x_RX
37*4882a593Smuzhiyun  * Registers: DMA_CONFIG0_SER_x_TX
38*4882a593Smuzhiyun  */
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #define M_DMA_DROP		    _SB_MAKEMASK1(0)
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun #define M_DMA_CHAIN_SEL		    _SB_MAKEMASK1(1)
44*4882a593Smuzhiyun #define M_DMA_RESERVED1		    _SB_MAKEMASK1(2)
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #define S_DMA_DESC_TYPE		    _SB_MAKE64(1)
47*4882a593Smuzhiyun #define M_DMA_DESC_TYPE		    _SB_MAKEMASK(2, S_DMA_DESC_TYPE)
48*4882a593Smuzhiyun #define V_DMA_DESC_TYPE(x)	    _SB_MAKEVALUE(x, S_DMA_DESC_TYPE)
49*4882a593Smuzhiyun #define G_DMA_DESC_TYPE(x)	    _SB_GETVALUE(x, S_DMA_DESC_TYPE, M_DMA_DESC_TYPE)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_AL		0
52*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_CHAIN_AL	1
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
55*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_UAL_WI	2
56*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_UAL_RMW	3
57*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define M_DMA_EOP_INT_EN	    _SB_MAKEMASK1(3)
60*4882a593Smuzhiyun #define M_DMA_HWM_INT_EN	    _SB_MAKEMASK1(4)
61*4882a593Smuzhiyun #define M_DMA_LWM_INT_EN	    _SB_MAKEMASK1(5)
62*4882a593Smuzhiyun #define M_DMA_TBX_EN		    _SB_MAKEMASK1(6)
63*4882a593Smuzhiyun #define M_DMA_TDX_EN		    _SB_MAKEMASK1(7)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define S_DMA_INT_PKTCNT	    _SB_MAKE64(8)
66*4882a593Smuzhiyun #define M_DMA_INT_PKTCNT	    _SB_MAKEMASK(8, S_DMA_INT_PKTCNT)
67*4882a593Smuzhiyun #define V_DMA_INT_PKTCNT(x)	    _SB_MAKEVALUE(x, S_DMA_INT_PKTCNT)
68*4882a593Smuzhiyun #define G_DMA_INT_PKTCNT(x)	    _SB_GETVALUE(x, S_DMA_INT_PKTCNT, M_DMA_INT_PKTCNT)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define S_DMA_RINGSZ		    _SB_MAKE64(16)
71*4882a593Smuzhiyun #define M_DMA_RINGSZ		    _SB_MAKEMASK(16, S_DMA_RINGSZ)
72*4882a593Smuzhiyun #define V_DMA_RINGSZ(x)		    _SB_MAKEVALUE(x, S_DMA_RINGSZ)
73*4882a593Smuzhiyun #define G_DMA_RINGSZ(x)		    _SB_GETVALUE(x, S_DMA_RINGSZ, M_DMA_RINGSZ)
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define S_DMA_HIGH_WATERMARK	    _SB_MAKE64(32)
76*4882a593Smuzhiyun #define M_DMA_HIGH_WATERMARK	    _SB_MAKEMASK(16, S_DMA_HIGH_WATERMARK)
77*4882a593Smuzhiyun #define V_DMA_HIGH_WATERMARK(x)	    _SB_MAKEVALUE(x, S_DMA_HIGH_WATERMARK)
78*4882a593Smuzhiyun #define G_DMA_HIGH_WATERMARK(x)	    _SB_GETVALUE(x, S_DMA_HIGH_WATERMARK, M_DMA_HIGH_WATERMARK)
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define S_DMA_LOW_WATERMARK	    _SB_MAKE64(48)
81*4882a593Smuzhiyun #define M_DMA_LOW_WATERMARK	    _SB_MAKEMASK(16, S_DMA_LOW_WATERMARK)
82*4882a593Smuzhiyun #define V_DMA_LOW_WATERMARK(x)	    _SB_MAKEVALUE(x, S_DMA_LOW_WATERMARK)
83*4882a593Smuzhiyun #define G_DMA_LOW_WATERMARK(x)	    _SB_GETVALUE(x, S_DMA_LOW_WATERMARK, M_DMA_LOW_WATERMARK)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /*
86*4882a593Smuzhiyun  * Ethernet and Serial DMA Configuration Register 1 (Table 7-5)
87*4882a593Smuzhiyun  * Registers: DMA_CONFIG1_MAC_x_RX_CH_0
88*4882a593Smuzhiyun  * Registers: DMA_CONFIG1_DMA_x_TX_CH_0
89*4882a593Smuzhiyun  * Registers: DMA_CONFIG1_SER_x_RX
90*4882a593Smuzhiyun  * Registers: DMA_CONFIG1_SER_x_TX
91*4882a593Smuzhiyun  */
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define M_DMA_HDR_CF_EN		    _SB_MAKEMASK1(0)
94*4882a593Smuzhiyun #define M_DMA_ASIC_XFR_EN	    _SB_MAKEMASK1(1)
95*4882a593Smuzhiyun #define M_DMA_PRE_ADDR_EN	    _SB_MAKEMASK1(2)
96*4882a593Smuzhiyun #define M_DMA_FLOW_CTL_EN	    _SB_MAKEMASK1(3)
97*4882a593Smuzhiyun #define M_DMA_NO_DSCR_UPDT	    _SB_MAKEMASK1(4)
98*4882a593Smuzhiyun #define M_DMA_L2CA		    _SB_MAKEMASK1(5)
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
101*4882a593Smuzhiyun #define M_DMA_RX_XTRA_STATUS	    _SB_MAKEMASK1(6)
102*4882a593Smuzhiyun #define M_DMA_TX_CPU_PAUSE	    _SB_MAKEMASK1(6)
103*4882a593Smuzhiyun #define M_DMA_TX_FC_PAUSE_EN	    _SB_MAKEMASK1(7)
104*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define M_DMA_MBZ1		    _SB_MAKEMASK(6, 15)
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #define S_DMA_HDR_SIZE		    _SB_MAKE64(21)
109*4882a593Smuzhiyun #define M_DMA_HDR_SIZE		    _SB_MAKEMASK(9, S_DMA_HDR_SIZE)
110*4882a593Smuzhiyun #define V_DMA_HDR_SIZE(x)	    _SB_MAKEVALUE(x, S_DMA_HDR_SIZE)
111*4882a593Smuzhiyun #define G_DMA_HDR_SIZE(x)	    _SB_GETVALUE(x, S_DMA_HDR_SIZE, M_DMA_HDR_SIZE)
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #define M_DMA_MBZ2		    _SB_MAKEMASK(5, 32)
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #define S_DMA_ASICXFR_SIZE	    _SB_MAKE64(37)
116*4882a593Smuzhiyun #define M_DMA_ASICXFR_SIZE	    _SB_MAKEMASK(9, S_DMA_ASICXFR_SIZE)
117*4882a593Smuzhiyun #define V_DMA_ASICXFR_SIZE(x)	    _SB_MAKEVALUE(x, S_DMA_ASICXFR_SIZE)
118*4882a593Smuzhiyun #define G_DMA_ASICXFR_SIZE(x)	    _SB_GETVALUE(x, S_DMA_ASICXFR_SIZE, M_DMA_ASICXFR_SIZE)
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun #define S_DMA_INT_TIMEOUT	    _SB_MAKE64(48)
121*4882a593Smuzhiyun #define M_DMA_INT_TIMEOUT	    _SB_MAKEMASK(16, S_DMA_INT_TIMEOUT)
122*4882a593Smuzhiyun #define V_DMA_INT_TIMEOUT(x)	    _SB_MAKEVALUE(x, S_DMA_INT_TIMEOUT)
123*4882a593Smuzhiyun #define G_DMA_INT_TIMEOUT(x)	    _SB_GETVALUE(x, S_DMA_INT_TIMEOUT, M_DMA_INT_TIMEOUT)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun /*
126*4882a593Smuzhiyun  * Ethernet and Serial DMA Descriptor base address (Table 7-6)
127*4882a593Smuzhiyun  */
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #define M_DMA_DSCRBASE_MBZ	    _SB_MAKEMASK(4, 0)
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun /*
133*4882a593Smuzhiyun  * ASIC Mode Base Address (Table 7-7)
134*4882a593Smuzhiyun  */
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #define M_DMA_ASIC_BASE_MBZ	    _SB_MAKEMASK(20, 0)
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun /*
139*4882a593Smuzhiyun  * DMA Descriptor Count Registers (Table 7-8)
140*4882a593Smuzhiyun  */
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun /* No bitfields */
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun /*
146*4882a593Smuzhiyun  * Current Descriptor Address Register (Table 7-11)
147*4882a593Smuzhiyun  */
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #define S_DMA_CURDSCR_ADDR	    _SB_MAKE64(0)
150*4882a593Smuzhiyun #define M_DMA_CURDSCR_ADDR	    _SB_MAKEMASK(40, S_DMA_CURDSCR_ADDR)
151*4882a593Smuzhiyun #define S_DMA_CURDSCR_COUNT	    _SB_MAKE64(40)
152*4882a593Smuzhiyun #define M_DMA_CURDSCR_COUNT	    _SB_MAKEMASK(16, S_DMA_CURDSCR_COUNT)
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
155*4882a593Smuzhiyun #define M_DMA_TX_CH_PAUSE_ON	    _SB_MAKEMASK1(56)
156*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun /*
159*4882a593Smuzhiyun  * Receive Packet Drop Registers
160*4882a593Smuzhiyun  */
161*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
162*4882a593Smuzhiyun #define S_DMA_OODLOST_RX	   _SB_MAKE64(0)
163*4882a593Smuzhiyun #define M_DMA_OODLOST_RX	   _SB_MAKEMASK(16, S_DMA_OODLOST_RX)
164*4882a593Smuzhiyun #define G_DMA_OODLOST_RX(x)	   _SB_GETVALUE(x, S_DMA_OODLOST_RX, M_DMA_OODLOST_RX)
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun #define S_DMA_EOP_COUNT_RX	   _SB_MAKE64(16)
167*4882a593Smuzhiyun #define M_DMA_EOP_COUNT_RX	   _SB_MAKEMASK(8, S_DMA_EOP_COUNT_RX)
168*4882a593Smuzhiyun #define G_DMA_EOP_COUNT_RX(x)	   _SB_GETVALUE(x, S_DMA_EOP_COUNT_RX, M_DMA_EOP_COUNT_RX)
169*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun /*  *********************************************************************
172*4882a593Smuzhiyun     *  DMA Descriptors
173*4882a593Smuzhiyun     ********************************************************************* */
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun /*
176*4882a593Smuzhiyun  * Descriptor doubleword "A"  (Table 7-12)
177*4882a593Smuzhiyun  */
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun #define S_DMA_DSCRA_OFFSET	    _SB_MAKE64(0)
180*4882a593Smuzhiyun #define M_DMA_DSCRA_OFFSET	    _SB_MAKEMASK(5, S_DMA_DSCRA_OFFSET)
181*4882a593Smuzhiyun #define V_DMA_DSCRA_OFFSET(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRA_OFFSET)
182*4882a593Smuzhiyun #define G_DMA_DSCRA_OFFSET(x)	    _SB_GETVALUE(x, S_DMA_DSCRA_OFFSET, M_DMA_DSCRA_OFFSET)
183*4882a593Smuzhiyun 
184*4882a593Smuzhiyun /* Note: Don't shift the address over, just mask it with the mask below */
185*4882a593Smuzhiyun #define S_DMA_DSCRA_A_ADDR	    _SB_MAKE64(5)
186*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR	    _SB_MAKEMASK(35, S_DMA_DSCRA_A_ADDR)
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR_OFFSET   (M_DMA_DSCRA_OFFSET | M_DMA_DSCRA_A_ADDR)
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
191*4882a593Smuzhiyun #define S_DMA_DSCRA_A_ADDR_UA	     _SB_MAKE64(0)
192*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR_UA	     _SB_MAKEMASK(40, S_DMA_DSCRA_A_ADDR_UA)
193*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define S_DMA_DSCRA_A_SIZE	    _SB_MAKE64(40)
196*4882a593Smuzhiyun #define M_DMA_DSCRA_A_SIZE	    _SB_MAKEMASK(9, S_DMA_DSCRA_A_SIZE)
197*4882a593Smuzhiyun #define V_DMA_DSCRA_A_SIZE(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRA_A_SIZE)
198*4882a593Smuzhiyun #define G_DMA_DSCRA_A_SIZE(x)	    _SB_GETVALUE(x, S_DMA_DSCRA_A_SIZE, M_DMA_DSCRA_A_SIZE)
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
201*4882a593Smuzhiyun #define S_DMA_DSCRA_DSCR_CNT	    _SB_MAKE64(40)
202*4882a593Smuzhiyun #define M_DMA_DSCRA_DSCR_CNT	    _SB_MAKEMASK(8, S_DMA_DSCRA_DSCR_CNT)
203*4882a593Smuzhiyun #define G_DMA_DSCRA_DSCR_CNT(x)	    _SB_GETVALUE(x, S_DMA_DSCRA_DSCR_CNT, M_DMA_DSCRA_DSCR_CNT)
204*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
205*4882a593Smuzhiyun 
206*4882a593Smuzhiyun #define M_DMA_DSCRA_INTERRUPT	    _SB_MAKEMASK1(49)
207*4882a593Smuzhiyun #define M_DMA_DSCRA_OFFSETB	    _SB_MAKEMASK1(50)
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun #define S_DMA_DSCRA_STATUS	    _SB_MAKE64(51)
210*4882a593Smuzhiyun #define M_DMA_DSCRA_STATUS	    _SB_MAKEMASK(13, S_DMA_DSCRA_STATUS)
211*4882a593Smuzhiyun #define V_DMA_DSCRA_STATUS(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRA_STATUS)
212*4882a593Smuzhiyun #define G_DMA_DSCRA_STATUS(x)	    _SB_GETVALUE(x, S_DMA_DSCRA_STATUS, M_DMA_DSCRA_STATUS)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun /*
215*4882a593Smuzhiyun  * Descriptor doubleword "B"  (Table 7-13)
216*4882a593Smuzhiyun  */
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun #define S_DMA_DSCRB_OPTIONS	    _SB_MAKE64(0)
220*4882a593Smuzhiyun #define M_DMA_DSCRB_OPTIONS	    _SB_MAKEMASK(4, S_DMA_DSCRB_OPTIONS)
221*4882a593Smuzhiyun #define V_DMA_DSCRB_OPTIONS(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRB_OPTIONS)
222*4882a593Smuzhiyun #define G_DMA_DSCRB_OPTIONS(x)	    _SB_GETVALUE(x, S_DMA_DSCRB_OPTIONS, M_DMA_DSCRB_OPTIONS)
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
225*4882a593Smuzhiyun #define S_DMA_DSCRB_A_SIZE	  _SB_MAKE64(8)
226*4882a593Smuzhiyun #define M_DMA_DSCRB_A_SIZE	  _SB_MAKEMASK(14, S_DMA_DSCRB_A_SIZE)
227*4882a593Smuzhiyun #define V_DMA_DSCRB_A_SIZE(x)	  _SB_MAKEVALUE(x, S_DMA_DSCRB_A_SIZE)
228*4882a593Smuzhiyun #define G_DMA_DSCRB_A_SIZE(x)	  _SB_GETVALUE(x, S_DMA_DSCRB_A_SIZE, M_DMA_DSCRB_A_SIZE)
229*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun #define R_DMA_DSCRB_ADDR	    _SB_MAKE64(0x10)
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun /* Note: Don't shift the address over, just mask it with the mask below */
234*4882a593Smuzhiyun #define S_DMA_DSCRB_B_ADDR	    _SB_MAKE64(5)
235*4882a593Smuzhiyun #define M_DMA_DSCRB_B_ADDR	    _SB_MAKEMASK(35, S_DMA_DSCRB_B_ADDR)
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun #define S_DMA_DSCRB_B_SIZE	    _SB_MAKE64(40)
238*4882a593Smuzhiyun #define M_DMA_DSCRB_B_SIZE	    _SB_MAKEMASK(9, S_DMA_DSCRB_B_SIZE)
239*4882a593Smuzhiyun #define V_DMA_DSCRB_B_SIZE(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRB_B_SIZE)
240*4882a593Smuzhiyun #define G_DMA_DSCRB_B_SIZE(x)	    _SB_GETVALUE(x, S_DMA_DSCRB_B_SIZE, M_DMA_DSCRB_B_SIZE)
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun #define M_DMA_DSCRB_B_VALID	    _SB_MAKEMASK1(49)
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
245*4882a593Smuzhiyun #define S_DMA_DSCRB_PKT_SIZE_MSB    _SB_MAKE64(48)
246*4882a593Smuzhiyun #define M_DMA_DSCRB_PKT_SIZE_MSB    _SB_MAKEMASK(2, S_DMA_DSCRB_PKT_SIZE_MSB)
247*4882a593Smuzhiyun #define V_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB)
248*4882a593Smuzhiyun #define G_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB, M_DMA_DSCRB_PKT_SIZE_MSB)
249*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun #define S_DMA_DSCRB_PKT_SIZE	    _SB_MAKE64(50)
252*4882a593Smuzhiyun #define M_DMA_DSCRB_PKT_SIZE	    _SB_MAKEMASK(14, S_DMA_DSCRB_PKT_SIZE)
253*4882a593Smuzhiyun #define V_DMA_DSCRB_PKT_SIZE(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE)
254*4882a593Smuzhiyun #define G_DMA_DSCRB_PKT_SIZE(x)	    _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE, M_DMA_DSCRB_PKT_SIZE)
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun /*
257*4882a593Smuzhiyun  * from pass2 some bits in dscr_b are also used for rx status
258*4882a593Smuzhiyun  */
259*4882a593Smuzhiyun #define S_DMA_DSCRB_STATUS	    _SB_MAKE64(0)
260*4882a593Smuzhiyun #define M_DMA_DSCRB_STATUS	    _SB_MAKEMASK(1, S_DMA_DSCRB_STATUS)
261*4882a593Smuzhiyun #define V_DMA_DSCRB_STATUS(x)	    _SB_MAKEVALUE(x, S_DMA_DSCRB_STATUS)
262*4882a593Smuzhiyun #define G_DMA_DSCRB_STATUS(x)	    _SB_GETVALUE(x, S_DMA_DSCRB_STATUS, M_DMA_DSCRB_STATUS)
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun /*
265*4882a593Smuzhiyun  * Ethernet Descriptor Status Bits (Table 7-15)
266*4882a593Smuzhiyun  */
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun #define M_DMA_ETHRX_BADIP4CS	    _SB_MAKEMASK1(51)
269*4882a593Smuzhiyun #define M_DMA_ETHRX_DSCRERR	    _SB_MAKEMASK1(52)
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
272*4882a593Smuzhiyun /* Note: This bit is in the DSCR_B options field */
273*4882a593Smuzhiyun #define M_DMA_ETHRX_BADTCPCS	_SB_MAKEMASK1(0)
274*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
277*4882a593Smuzhiyun /* Note: These bits are in the DSCR_B options field */
278*4882a593Smuzhiyun #define M_DMA_ETH_VLAN_FLAG	_SB_MAKEMASK1(1)
279*4882a593Smuzhiyun #define M_DMA_ETH_CRC_FLAG	_SB_MAKEMASK1(2)
280*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define S_DMA_ETHRX_RXCH	    53
283*4882a593Smuzhiyun #define M_DMA_ETHRX_RXCH	    _SB_MAKEMASK(2, S_DMA_ETHRX_RXCH)
284*4882a593Smuzhiyun #define V_DMA_ETHRX_RXCH(x)	    _SB_MAKEVALUE(x, S_DMA_ETHRX_RXCH)
285*4882a593Smuzhiyun #define G_DMA_ETHRX_RXCH(x)	    _SB_GETVALUE(x, S_DMA_ETHRX_RXCH, M_DMA_ETHRX_RXCH)
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #define S_DMA_ETHRX_PKTTYPE	    55
288*4882a593Smuzhiyun #define M_DMA_ETHRX_PKTTYPE	    _SB_MAKEMASK(3, S_DMA_ETHRX_PKTTYPE)
289*4882a593Smuzhiyun #define V_DMA_ETHRX_PKTTYPE(x)	    _SB_MAKEVALUE(x, S_DMA_ETHRX_PKTTYPE)
290*4882a593Smuzhiyun #define G_DMA_ETHRX_PKTTYPE(x)	    _SB_GETVALUE(x, S_DMA_ETHRX_PKTTYPE, M_DMA_ETHRX_PKTTYPE)
291*4882a593Smuzhiyun 
292*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_IPV4    0
293*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_ARPV4   1
294*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_802	    2
295*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_OTHER   3
296*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER0   4
297*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER1   5
298*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER2   6
299*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER3   7
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun #define M_DMA_ETHRX_MATCH_HASH	    _SB_MAKEMASK1(58)
302*4882a593Smuzhiyun #define M_DMA_ETHRX_MATCH_EXACT	    _SB_MAKEMASK1(59)
303*4882a593Smuzhiyun #define M_DMA_ETHRX_BCAST	    _SB_MAKEMASK1(60)
304*4882a593Smuzhiyun #define M_DMA_ETHRX_MCAST	    _SB_MAKEMASK1(61)
305*4882a593Smuzhiyun #define M_DMA_ETHRX_BAD		    _SB_MAKEMASK1(62)
306*4882a593Smuzhiyun #define M_DMA_ETHRX_SOP		    _SB_MAKEMASK1(63)
307*4882a593Smuzhiyun 
308*4882a593Smuzhiyun /*
309*4882a593Smuzhiyun  * Ethernet Transmit Status Bits (Table 7-16)
310*4882a593Smuzhiyun  */
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun #define M_DMA_ETHTX_SOP		    _SB_MAKEMASK1(63)
313*4882a593Smuzhiyun 
314*4882a593Smuzhiyun /*
315*4882a593Smuzhiyun  * Ethernet Transmit Options (Table 7-17)
316*4882a593Smuzhiyun  */
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun #define K_DMA_ETHTX_NOTSOP	    _SB_MAKE64(0x00)
319*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDCRC	    _SB_MAKE64(0x01)
320*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACECRC	    _SB_MAKE64(0x02)
321*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDCRC_APPENDPAD _SB_MAKE64(0x03)
322*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDVLAN_REPLACECRC _SB_MAKE64(0x04)
323*4882a593Smuzhiyun #define K_DMA_ETHTX_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x05)
324*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x6)
325*4882a593Smuzhiyun #define K_DMA_ETHTX_NOMODS	    _SB_MAKE64(0x07)
326*4882a593Smuzhiyun #define K_DMA_ETHTX_RESERVED1	    _SB_MAKE64(0x08)
327*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC _SB_MAKE64(0x09)
328*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REPLACECRC _SB_MAKE64(0x0A)
329*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC_APPENDPAD _SB_MAKE64(0x0B)
330*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDVLAN_REPLACECRC _SB_MAKE64(0x0C)
331*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x0D)
332*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x0E)
333*4882a593Smuzhiyun #define K_DMA_ETHTX_RESERVED2	    _SB_MAKE64(0x0F)
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun /*
336*4882a593Smuzhiyun  * Serial Receive Options (Table 7-18)
337*4882a593Smuzhiyun  */
338*4882a593Smuzhiyun #define M_DMA_SERRX_CRC_ERROR	    _SB_MAKEMASK1(56)
339*4882a593Smuzhiyun #define M_DMA_SERRX_ABORT	    _SB_MAKEMASK1(57)
340*4882a593Smuzhiyun #define M_DMA_SERRX_OCTET_ERROR	    _SB_MAKEMASK1(58)
341*4882a593Smuzhiyun #define M_DMA_SERRX_LONGFRAME_ERROR _SB_MAKEMASK1(59)
342*4882a593Smuzhiyun #define M_DMA_SERRX_SHORTFRAME_ERROR _SB_MAKEMASK1(60)
343*4882a593Smuzhiyun #define M_DMA_SERRX_OVERRUN_ERROR   _SB_MAKEMASK1(61)
344*4882a593Smuzhiyun #define M_DMA_SERRX_GOOD	    _SB_MAKEMASK1(62)
345*4882a593Smuzhiyun #define M_DMA_SERRX_SOP		    _SB_MAKEMASK1(63)
346*4882a593Smuzhiyun 
347*4882a593Smuzhiyun /*
348*4882a593Smuzhiyun  * Serial Transmit Status Bits (Table 7-20)
349*4882a593Smuzhiyun  */
350*4882a593Smuzhiyun 
351*4882a593Smuzhiyun #define M_DMA_SERTX_FLAG	    _SB_MAKEMASK1(63)
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun /*
354*4882a593Smuzhiyun  * Serial Transmit Options (Table 7-21)
355*4882a593Smuzhiyun  */
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun #define K_DMA_SERTX_RESERVED	    _SB_MAKEMASK1(0)
358*4882a593Smuzhiyun #define K_DMA_SERTX_APPENDCRC	    _SB_MAKEMASK1(1)
359*4882a593Smuzhiyun #define K_DMA_SERTX_APPENDPAD	    _SB_MAKEMASK1(2)
360*4882a593Smuzhiyun #define K_DMA_SERTX_ABORT	    _SB_MAKEMASK1(3)
361*4882a593Smuzhiyun 
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun /*  *********************************************************************
364*4882a593Smuzhiyun     *  Data Mover Registers
365*4882a593Smuzhiyun     ********************************************************************* */
366*4882a593Smuzhiyun 
367*4882a593Smuzhiyun /*
368*4882a593Smuzhiyun  * Data Mover Descriptor Base Address Register (Table 7-22)
369*4882a593Smuzhiyun  * Register: DM_DSCR_BASE_0
370*4882a593Smuzhiyun  * Register: DM_DSCR_BASE_1
371*4882a593Smuzhiyun  * Register: DM_DSCR_BASE_2
372*4882a593Smuzhiyun  * Register: DM_DSCR_BASE_3
373*4882a593Smuzhiyun  */
374*4882a593Smuzhiyun 
375*4882a593Smuzhiyun #define M_DM_DSCR_BASE_MBZ	    _SB_MAKEMASK(4, 0)
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun /*  Note: Just mask the base address and then OR it in. */
378*4882a593Smuzhiyun #define S_DM_DSCR_BASE_ADDR	    _SB_MAKE64(4)
379*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ADDR	    _SB_MAKEMASK(36, S_DM_DSCR_BASE_ADDR)
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun #define S_DM_DSCR_BASE_RINGSZ	    _SB_MAKE64(40)
382*4882a593Smuzhiyun #define M_DM_DSCR_BASE_RINGSZ	    _SB_MAKEMASK(16, S_DM_DSCR_BASE_RINGSZ)
383*4882a593Smuzhiyun #define V_DM_DSCR_BASE_RINGSZ(x)    _SB_MAKEVALUE(x, S_DM_DSCR_BASE_RINGSZ)
384*4882a593Smuzhiyun #define G_DM_DSCR_BASE_RINGSZ(x)    _SB_GETVALUE(x, S_DM_DSCR_BASE_RINGSZ, M_DM_DSCR_BASE_RINGSZ)
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun #define S_DM_DSCR_BASE_PRIORITY	    _SB_MAKE64(56)
387*4882a593Smuzhiyun #define M_DM_DSCR_BASE_PRIORITY	    _SB_MAKEMASK(3, S_DM_DSCR_BASE_PRIORITY)
388*4882a593Smuzhiyun #define V_DM_DSCR_BASE_PRIORITY(x)  _SB_MAKEVALUE(x, S_DM_DSCR_BASE_PRIORITY)
389*4882a593Smuzhiyun #define G_DM_DSCR_BASE_PRIORITY(x)  _SB_GETVALUE(x, S_DM_DSCR_BASE_PRIORITY, M_DM_DSCR_BASE_PRIORITY)
390*4882a593Smuzhiyun 
391*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_1   0
392*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_2   1
393*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_4   2
394*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_8   3
395*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_16  4
396*4882a593Smuzhiyun 
397*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ACTIVE	    _SB_MAKEMASK1(59)
398*4882a593Smuzhiyun #define M_DM_DSCR_BASE_INTERRUPT    _SB_MAKEMASK1(60)
399*4882a593Smuzhiyun #define M_DM_DSCR_BASE_RESET	    _SB_MAKEMASK1(61)	/* write register */
400*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ERROR	    _SB_MAKEMASK1(61)	/* read register */
401*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ABORT	    _SB_MAKEMASK1(62)
402*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ENABL	    _SB_MAKEMASK1(63)
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun /*
405*4882a593Smuzhiyun  * Data Mover Descriptor Count Register (Table 7-25)
406*4882a593Smuzhiyun  */
407*4882a593Smuzhiyun 
408*4882a593Smuzhiyun /* no bitfields */
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun /*
411*4882a593Smuzhiyun  * Data Mover Current Descriptor Address (Table 7-24)
412*4882a593Smuzhiyun  * Register: DM_CUR_DSCR_ADDR_0
413*4882a593Smuzhiyun  * Register: DM_CUR_DSCR_ADDR_1
414*4882a593Smuzhiyun  * Register: DM_CUR_DSCR_ADDR_2
415*4882a593Smuzhiyun  * Register: DM_CUR_DSCR_ADDR_3
416*4882a593Smuzhiyun  */
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun #define S_DM_CUR_DSCR_DSCR_ADDR	    _SB_MAKE64(0)
419*4882a593Smuzhiyun #define M_DM_CUR_DSCR_DSCR_ADDR	    _SB_MAKEMASK(40, S_DM_CUR_DSCR_DSCR_ADDR)
420*4882a593Smuzhiyun 
421*4882a593Smuzhiyun #define S_DM_CUR_DSCR_DSCR_COUNT    _SB_MAKE64(48)
422*4882a593Smuzhiyun #define M_DM_CUR_DSCR_DSCR_COUNT    _SB_MAKEMASK(16, S_DM_CUR_DSCR_DSCR_COUNT)
423*4882a593Smuzhiyun #define V_DM_CUR_DSCR_DSCR_COUNT(r) _SB_MAKEVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT)
424*4882a593Smuzhiyun #define G_DM_CUR_DSCR_DSCR_COUNT(r) _SB_GETVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT,\
425*4882a593Smuzhiyun 				     M_DM_CUR_DSCR_DSCR_COUNT)
426*4882a593Smuzhiyun 
427*4882a593Smuzhiyun 
428*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
429*4882a593Smuzhiyun /*
430*4882a593Smuzhiyun  * Data Mover Channel Partial Result Registers
431*4882a593Smuzhiyun  * Register: DM_PARTIAL_0
432*4882a593Smuzhiyun  * Register: DM_PARTIAL_1
433*4882a593Smuzhiyun  * Register: DM_PARTIAL_2
434*4882a593Smuzhiyun  * Register: DM_PARTIAL_3
435*4882a593Smuzhiyun  */
436*4882a593Smuzhiyun #define S_DM_PARTIAL_CRC_PARTIAL      _SB_MAKE64(0)
437*4882a593Smuzhiyun #define M_DM_PARTIAL_CRC_PARTIAL      _SB_MAKEMASK(32, S_DM_PARTIAL_CRC_PARTIAL)
438*4882a593Smuzhiyun #define V_DM_PARTIAL_CRC_PARTIAL(r)   _SB_MAKEVALUE(r, S_DM_PARTIAL_CRC_PARTIAL)
439*4882a593Smuzhiyun #define G_DM_PARTIAL_CRC_PARTIAL(r)   _SB_GETVALUE(r, S_DM_PARTIAL_CRC_PARTIAL,\
440*4882a593Smuzhiyun 				       M_DM_PARTIAL_CRC_PARTIAL)
441*4882a593Smuzhiyun 
442*4882a593Smuzhiyun #define S_DM_PARTIAL_TCPCS_PARTIAL    _SB_MAKE64(32)
443*4882a593Smuzhiyun #define M_DM_PARTIAL_TCPCS_PARTIAL    _SB_MAKEMASK(16, S_DM_PARTIAL_TCPCS_PARTIAL)
444*4882a593Smuzhiyun #define V_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_MAKEVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL)
445*4882a593Smuzhiyun #define G_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_GETVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL,\
446*4882a593Smuzhiyun 				       M_DM_PARTIAL_TCPCS_PARTIAL)
447*4882a593Smuzhiyun 
448*4882a593Smuzhiyun #define M_DM_PARTIAL_ODD_BYTE	      _SB_MAKEMASK1(48)
449*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
450*4882a593Smuzhiyun 
451*4882a593Smuzhiyun 
452*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
453*4882a593Smuzhiyun /*
454*4882a593Smuzhiyun  * Data Mover CRC Definition Registers
455*4882a593Smuzhiyun  * Register: CRC_DEF_0
456*4882a593Smuzhiyun  * Register: CRC_DEF_1
457*4882a593Smuzhiyun  */
458*4882a593Smuzhiyun #define S_CRC_DEF_CRC_INIT	      _SB_MAKE64(0)
459*4882a593Smuzhiyun #define M_CRC_DEF_CRC_INIT	      _SB_MAKEMASK(32, S_CRC_DEF_CRC_INIT)
460*4882a593Smuzhiyun #define V_CRC_DEF_CRC_INIT(r)	      _SB_MAKEVALUE(r, S_CRC_DEF_CRC_INIT)
461*4882a593Smuzhiyun #define G_CRC_DEF_CRC_INIT(r)	      _SB_GETVALUE(r, S_CRC_DEF_CRC_INIT,\
462*4882a593Smuzhiyun 				       M_CRC_DEF_CRC_INIT)
463*4882a593Smuzhiyun 
464*4882a593Smuzhiyun #define S_CRC_DEF_CRC_POLY	      _SB_MAKE64(32)
465*4882a593Smuzhiyun #define M_CRC_DEF_CRC_POLY	      _SB_MAKEMASK(32, S_CRC_DEF_CRC_POLY)
466*4882a593Smuzhiyun #define V_CRC_DEF_CRC_POLY(r)	      _SB_MAKEVALUE(r, S_CRC_DEF_CRC_POLY)
467*4882a593Smuzhiyun #define G_CRC_DEF_CRC_POLY(r)	      _SB_GETVALUE(r, S_CRC_DEF_CRC_POLY,\
468*4882a593Smuzhiyun 				       M_CRC_DEF_CRC_POLY)
469*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
470*4882a593Smuzhiyun 
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
473*4882a593Smuzhiyun /*
474*4882a593Smuzhiyun  * Data Mover CRC/Checksum Definition Registers
475*4882a593Smuzhiyun  * Register: CTCP_DEF_0
476*4882a593Smuzhiyun  * Register: CTCP_DEF_1
477*4882a593Smuzhiyun  */
478*4882a593Smuzhiyun #define S_CTCP_DEF_CRC_TXOR	      _SB_MAKE64(0)
479*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_TXOR	      _SB_MAKEMASK(32, S_CTCP_DEF_CRC_TXOR)
480*4882a593Smuzhiyun #define V_CTCP_DEF_CRC_TXOR(r)	      _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_TXOR)
481*4882a593Smuzhiyun #define G_CTCP_DEF_CRC_TXOR(r)	      _SB_GETVALUE(r, S_CTCP_DEF_CRC_TXOR,\
482*4882a593Smuzhiyun 				       M_CTCP_DEF_CRC_TXOR)
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun #define S_CTCP_DEF_TCPCS_INIT	      _SB_MAKE64(32)
485*4882a593Smuzhiyun #define M_CTCP_DEF_TCPCS_INIT	      _SB_MAKEMASK(16, S_CTCP_DEF_TCPCS_INIT)
486*4882a593Smuzhiyun #define V_CTCP_DEF_TCPCS_INIT(r)      _SB_MAKEVALUE(r, S_CTCP_DEF_TCPCS_INIT)
487*4882a593Smuzhiyun #define G_CTCP_DEF_TCPCS_INIT(r)      _SB_GETVALUE(r, S_CTCP_DEF_TCPCS_INIT,\
488*4882a593Smuzhiyun 				       M_CTCP_DEF_TCPCS_INIT)
489*4882a593Smuzhiyun 
490*4882a593Smuzhiyun #define S_CTCP_DEF_CRC_WIDTH	      _SB_MAKE64(48)
491*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_WIDTH	      _SB_MAKEMASK(2, S_CTCP_DEF_CRC_WIDTH)
492*4882a593Smuzhiyun #define V_CTCP_DEF_CRC_WIDTH(r)	      _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_WIDTH)
493*4882a593Smuzhiyun #define G_CTCP_DEF_CRC_WIDTH(r)	      _SB_GETVALUE(r, S_CTCP_DEF_CRC_WIDTH,\
494*4882a593Smuzhiyun 				       M_CTCP_DEF_CRC_WIDTH)
495*4882a593Smuzhiyun 
496*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_4	      0
497*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_2	      1
498*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_1	      2
499*4882a593Smuzhiyun 
500*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_BIT_ORDER      _SB_MAKEMASK1(50)
501*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
502*4882a593Smuzhiyun 
503*4882a593Smuzhiyun 
504*4882a593Smuzhiyun /*
505*4882a593Smuzhiyun  * Data Mover Descriptor Doubleword "A"	 (Table 7-26)
506*4882a593Smuzhiyun  */
507*4882a593Smuzhiyun 
508*4882a593Smuzhiyun #define S_DM_DSCRA_DST_ADDR	    _SB_MAKE64(0)
509*4882a593Smuzhiyun #define M_DM_DSCRA_DST_ADDR	    _SB_MAKEMASK(40, S_DM_DSCRA_DST_ADDR)
510*4882a593Smuzhiyun 
511*4882a593Smuzhiyun #define M_DM_DSCRA_UN_DEST	    _SB_MAKEMASK1(40)
512*4882a593Smuzhiyun #define M_DM_DSCRA_UN_SRC	    _SB_MAKEMASK1(41)
513*4882a593Smuzhiyun #define M_DM_DSCRA_INTERRUPT	    _SB_MAKEMASK1(42)
514*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_UP_TO(1250, PASS1)
515*4882a593Smuzhiyun #define M_DM_DSCRA_THROTTLE	    _SB_MAKEMASK1(43)
516*4882a593Smuzhiyun #endif /* up to 1250 PASS1 */
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun #define S_DM_DSCRA_DIR_DEST	    _SB_MAKE64(44)
519*4882a593Smuzhiyun #define M_DM_DSCRA_DIR_DEST	    _SB_MAKEMASK(2, S_DM_DSCRA_DIR_DEST)
520*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST(x)	    _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_DEST)
521*4882a593Smuzhiyun #define G_DM_DSCRA_DIR_DEST(x)	    _SB_GETVALUE(x, S_DM_DSCRA_DIR_DEST, M_DM_DSCRA_DIR_DEST)
522*4882a593Smuzhiyun 
523*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_INCR    0
524*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_DECR    1
525*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_CONST   2
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_INCR    _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_INCR, S_DM_DSCRA_DIR_DEST)
528*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_DECR    _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_DECR, S_DM_DSCRA_DIR_DEST)
529*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_CONST   _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_CONST, S_DM_DSCRA_DIR_DEST)
530*4882a593Smuzhiyun 
531*4882a593Smuzhiyun #define S_DM_DSCRA_DIR_SRC	    _SB_MAKE64(46)
532*4882a593Smuzhiyun #define M_DM_DSCRA_DIR_SRC	    _SB_MAKEMASK(2, S_DM_DSCRA_DIR_SRC)
533*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC(x)	    _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_SRC)
534*4882a593Smuzhiyun #define G_DM_DSCRA_DIR_SRC(x)	    _SB_GETVALUE(x, S_DM_DSCRA_DIR_SRC, M_DM_DSCRA_DIR_SRC)
535*4882a593Smuzhiyun 
536*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_INCR	    0
537*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_DECR	    1
538*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_CONST    2
539*4882a593Smuzhiyun 
540*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_INCR	    _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_INCR, S_DM_DSCRA_DIR_SRC)
541*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_DECR	    _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_DECR, S_DM_DSCRA_DIR_SRC)
542*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_CONST    _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_CONST, S_DM_DSCRA_DIR_SRC)
543*4882a593Smuzhiyun 
544*4882a593Smuzhiyun 
545*4882a593Smuzhiyun #define M_DM_DSCRA_ZERO_MEM	    _SB_MAKEMASK1(48)
546*4882a593Smuzhiyun #define M_DM_DSCRA_PREFETCH	    _SB_MAKEMASK1(49)
547*4882a593Smuzhiyun #define M_DM_DSCRA_L2C_DEST	    _SB_MAKEMASK1(50)
548*4882a593Smuzhiyun #define M_DM_DSCRA_L2C_SRC	    _SB_MAKEMASK1(51)
549*4882a593Smuzhiyun 
550*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
551*4882a593Smuzhiyun #define M_DM_DSCRA_RD_BKOFF	    _SB_MAKEMASK1(52)
552*4882a593Smuzhiyun #define M_DM_DSCRA_WR_BKOFF	    _SB_MAKEMASK1(53)
553*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
554*4882a593Smuzhiyun 
555*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
556*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_EN	    _SB_MAKEMASK1(54)
557*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_RES	    _SB_MAKEMASK1(55)
558*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_AP	    _SB_MAKEMASK1(56)
559*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_EN	    _SB_MAKEMASK1(57)
560*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_RES	    _SB_MAKEMASK1(58)
561*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_AP	    _SB_MAKEMASK1(59)
562*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_DFN	    _SB_MAKEMASK1(60)
563*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_XBIT	    _SB_MAKEMASK1(61)
564*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
565*4882a593Smuzhiyun 
566*4882a593Smuzhiyun #define M_DM_DSCRA_RESERVED2	    _SB_MAKEMASK(3, 61)
567*4882a593Smuzhiyun 
568*4882a593Smuzhiyun /*
569*4882a593Smuzhiyun  * Data Mover Descriptor Doubleword "B"	 (Table 7-25)
570*4882a593Smuzhiyun  */
571*4882a593Smuzhiyun 
572*4882a593Smuzhiyun #define S_DM_DSCRB_SRC_ADDR	    _SB_MAKE64(0)
573*4882a593Smuzhiyun #define M_DM_DSCRB_SRC_ADDR	    _SB_MAKEMASK(40, S_DM_DSCRB_SRC_ADDR)
574*4882a593Smuzhiyun 
575*4882a593Smuzhiyun #define S_DM_DSCRB_SRC_LENGTH	    _SB_MAKE64(40)
576*4882a593Smuzhiyun #define M_DM_DSCRB_SRC_LENGTH	    _SB_MAKEMASK(20, S_DM_DSCRB_SRC_LENGTH)
577*4882a593Smuzhiyun #define V_DM_DSCRB_SRC_LENGTH(x)    _SB_MAKEVALUE(x, S_DM_DSCRB_SRC_LENGTH)
578*4882a593Smuzhiyun #define G_DM_DSCRB_SRC_LENGTH(x)    _SB_GETVALUE(x, S_DM_DSCRB_SRC_LENGTH, M_DM_DSCRB_SRC_LENGTH)
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun 
581*4882a593Smuzhiyun #endif
582