xref: /onnv-gate/usr/src/uts/common/io/atge/atge_l1_reg.h (revision 11353:db56a54bf91c)
1*11353SSaurabh.Mishra@Sun.COM /*
2*11353SSaurabh.Mishra@Sun.COM  * CDDL HEADER START
3*11353SSaurabh.Mishra@Sun.COM  *
4*11353SSaurabh.Mishra@Sun.COM  * The contents of this file are subject to the terms of the
5*11353SSaurabh.Mishra@Sun.COM  * Common Development and Distribution License (the "License").
6*11353SSaurabh.Mishra@Sun.COM  * You may not use this file except in compliance with the License.
7*11353SSaurabh.Mishra@Sun.COM  *
8*11353SSaurabh.Mishra@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*11353SSaurabh.Mishra@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*11353SSaurabh.Mishra@Sun.COM  * See the License for the specific language governing permissions
11*11353SSaurabh.Mishra@Sun.COM  * and limitations under the License.
12*11353SSaurabh.Mishra@Sun.COM  *
13*11353SSaurabh.Mishra@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*11353SSaurabh.Mishra@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*11353SSaurabh.Mishra@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*11353SSaurabh.Mishra@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*11353SSaurabh.Mishra@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*11353SSaurabh.Mishra@Sun.COM  *
19*11353SSaurabh.Mishra@Sun.COM  * CDDL HEADER END
20*11353SSaurabh.Mishra@Sun.COM  */
21*11353SSaurabh.Mishra@Sun.COM /*
22*11353SSaurabh.Mishra@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*11353SSaurabh.Mishra@Sun.COM  * Use is subject to license terms.
24*11353SSaurabh.Mishra@Sun.COM  */
25*11353SSaurabh.Mishra@Sun.COM 
26*11353SSaurabh.Mishra@Sun.COM #ifndef _ATGE_L1_REG_H
27*11353SSaurabh.Mishra@Sun.COM #define	_ATGE_L1_REG_H
28*11353SSaurabh.Mishra@Sun.COM 
29*11353SSaurabh.Mishra@Sun.COM #ifdef __cplusplus
30*11353SSaurabh.Mishra@Sun.COM 	extern "C" {
31*11353SSaurabh.Mishra@Sun.COM #endif
32*11353SSaurabh.Mishra@Sun.COM 
33*11353SSaurabh.Mishra@Sun.COM #pragma	pack(1)
34*11353SSaurabh.Mishra@Sun.COM typedef	struct	l1_cmb {
35*11353SSaurabh.Mishra@Sun.COM 	uint32_t	intr_status;
36*11353SSaurabh.Mishra@Sun.COM 	uint32_t	rx_prod_cons;
37*11353SSaurabh.Mishra@Sun.COM 	uint32_t	tx_prod_cons;
38*11353SSaurabh.Mishra@Sun.COM } l1_cmb_t;
39*11353SSaurabh.Mishra@Sun.COM 
40*11353SSaurabh.Mishra@Sun.COM typedef	struct	l1_rx_desc {
41*11353SSaurabh.Mishra@Sun.COM 	uint64_t	addr;
42*11353SSaurabh.Mishra@Sun.COM 	uint32_t	len;
43*11353SSaurabh.Mishra@Sun.COM } l1_rx_desc_t;
44*11353SSaurabh.Mishra@Sun.COM 
45*11353SSaurabh.Mishra@Sun.COM typedef	struct	l1_rx_rdesc {
46*11353SSaurabh.Mishra@Sun.COM 	uint32_t	index;
47*11353SSaurabh.Mishra@Sun.COM 	uint32_t	len;
48*11353SSaurabh.Mishra@Sun.COM 	uint32_t	flags;
49*11353SSaurabh.Mishra@Sun.COM 	uint32_t	vtags;
50*11353SSaurabh.Mishra@Sun.COM } l1_rx_rdesc_t;
51*11353SSaurabh.Mishra@Sun.COM 
52*11353SSaurabh.Mishra@Sun.COM /*
53*11353SSaurabh.Mishra@Sun.COM  * Statistics counters collected by the MAC
54*11353SSaurabh.Mishra@Sun.COM  */
55*11353SSaurabh.Mishra@Sun.COM typedef	struct l1_smb {
56*11353SSaurabh.Mishra@Sun.COM 	/* Rx stats. */
57*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_frames;
58*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_bcast_frames;
59*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_mcast_frames;
60*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pause_frames;
61*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_control_frames;
62*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_crcerrs;
63*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_lenerrs;
64*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_bytes;
65*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_runts;
66*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_fragments;
67*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_64;
68*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_65_127;
69*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_128_255;
70*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_256_511;
71*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_512_1023;
72*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_1024_1518;
73*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_1519_max;
74*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_truncated;
75*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_fifo_oflows;
76*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_desc_oflows;
77*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_alignerrs;
78*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_bcast_bytes;
79*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_mcast_bytes;
80*11353SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_filtered;
81*11353SSaurabh.Mishra@Sun.COM 	/* Tx stats. */
82*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_frames;
83*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_bcast_frames;
84*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_mcast_frames;
85*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pause_frames;
86*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_excess_defer;
87*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_control_frames;
88*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_deferred;
89*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_bytes;
90*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_64;
91*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_65_127;
92*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_128_255;
93*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_256_511;
94*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_512_1023;
95*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_1024_1518;
96*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_1519_max;
97*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_single_colls;
98*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_multi_colls;
99*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_late_colls;
100*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_excess_colls;
101*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_underrun;
102*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_desc_underrun;
103*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_lenerrs;
104*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_truncated;
105*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_bcast_bytes;
106*11353SSaurabh.Mishra@Sun.COM 	uint32_t tx_mcast_bytes;
107*11353SSaurabh.Mishra@Sun.COM 	uint32_t updated;
108*11353SSaurabh.Mishra@Sun.COM } atge_l1_smb_t;
109*11353SSaurabh.Mishra@Sun.COM #pragma	pack()
110*11353SSaurabh.Mishra@Sun.COM 
111*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_RING_CNT		256
112*11353SSaurabh.Mishra@Sun.COM #define	L1_RR_RING_CNT		(ATGE_TX_RING_CNT + L1_RX_RING_CNT)
113*11353SSaurabh.Mishra@Sun.COM 
114*11353SSaurabh.Mishra@Sun.COM #define	L1_RING_ALIGN		16
115*11353SSaurabh.Mishra@Sun.COM #define	L1_TX_RING_ALIGN	16
116*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_RING_ALIGN	16
117*11353SSaurabh.Mishra@Sun.COM #define	L1_RR_RING_ALIGN	16
118*11353SSaurabh.Mishra@Sun.COM #define	L1_CMB_ALIGN		16
119*11353SSaurabh.Mishra@Sun.COM #define	L1_SMB_ALIGN		16
120*11353SSaurabh.Mishra@Sun.COM 
121*11353SSaurabh.Mishra@Sun.COM #define	L1_CMB_BLOCK_SZ	sizeof (struct l1_cmb)
122*11353SSaurabh.Mishra@Sun.COM #define	L1_SMB_BLOCK_SZ	sizeof (struct l1_smb)
123*11353SSaurabh.Mishra@Sun.COM 
124*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_RING_SZ		\
125*11353SSaurabh.Mishra@Sun.COM 	(sizeof (struct l1_rx_desc) * L1_RX_RING_CNT)
126*11353SSaurabh.Mishra@Sun.COM 
127*11353SSaurabh.Mishra@Sun.COM #define	L1_RR_RING_SZ		\
128*11353SSaurabh.Mishra@Sun.COM 	(sizeof (struct l1_rx_rdesc) * L1_RR_RING_CNT)
129*11353SSaurabh.Mishra@Sun.COM 
130*11353SSaurabh.Mishra@Sun.COM /*
131*11353SSaurabh.Mishra@Sun.COM  * For RX
132*11353SSaurabh.Mishra@Sun.COM  */
133*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CONS_SHIFT		16
134*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_NSEGS_MASK		0x000000FF
135*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CONS_MASK		0xFFFF0000
136*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_NSEGS_SHIFT		0
137*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_LEN_MASK			0xFFFF0000
138*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CSUM_MASK		0x0000FFFF
139*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CSUM_SHIFT		0
140*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_LEN_SHIFT		16
141*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_ETHERNET			0x00000080
142*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_VLAN			0x00000100
143*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_ERROR			0x00000200
144*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_IPV4			0x00000400
145*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_UDP			0x00000800
146*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_TCP			0x00001000
147*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_BCAST			0x00002000
148*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_MCAST			0x00004000
149*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_PAUSE			0x00008000
150*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CRC			0x00010000
151*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_CODE			0x00020000
152*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_DRIBBLE			0x00040000
153*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_RUNT			0x00080000
154*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_OFLOW			0x00100000
155*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_TRUNC			0x00200000
156*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_IPCSUM_NOK		0x00400000
157*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_TCP_UDPCSUM_NOK		0x00800000
158*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_LENGTH_NOK		0x01000000
159*11353SSaurabh.Mishra@Sun.COM #define	L1_RRD_DES_ADDR_FILTERED	0x02000000
160*11353SSaurabh.Mishra@Sun.COM #define	RRD_PROD_MASK			0x0000FFFF
161*11353SSaurabh.Mishra@Sun.COM #define	TPD_CONS_MASK			0xFFFF0000
162*11353SSaurabh.Mishra@Sun.COM #define	TPD_CONS_SHIFT			16
163*11353SSaurabh.Mishra@Sun.COM #define	CMB_UPDATED			0x00000001
164*11353SSaurabh.Mishra@Sun.COM #define	RRD_PROD_SHIFT			0
165*11353SSaurabh.Mishra@Sun.COM 
166*11353SSaurabh.Mishra@Sun.COM /*
167*11353SSaurabh.Mishra@Sun.COM  * All descriptors and CMB/SMB share the same high address.
168*11353SSaurabh.Mishra@Sun.COM  */
169*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_ADDR_HI	0x1540
170*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_RD_ADDR_LO	0x1544
171*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_RRD_ADDR_LO	0x1548
172*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_TPD_ADDR_LO	0x154C
173*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_CMB_ADDR_LO	0x1550
174*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_SMB_ADDR_LO	0x1554
175*11353SSaurabh.Mishra@Sun.COM #define	L1_DESC_RRD_RD_CNT	0x1558
176*11353SSaurabh.Mishra@Sun.COM #define	DESC_RRD_CNT_SHIFT	16
177*11353SSaurabh.Mishra@Sun.COM #define	DESC_RRD_CNT_MASK	0x07FF0000
178*11353SSaurabh.Mishra@Sun.COM #define	DESC_RD_CNT_SHIFT	0
179*11353SSaurabh.Mishra@Sun.COM #define	DESC_RD_CNT_MASK	0x000007FF
180*11353SSaurabh.Mishra@Sun.COM 
181*11353SSaurabh.Mishra@Sun.COM /*
182*11353SSaurabh.Mishra@Sun.COM  * PHY registers.
183*11353SSaurabh.Mishra@Sun.COM  */
184*11353SSaurabh.Mishra@Sun.COM #define	L1_CSMB_CTRL		0x15D0
185*11353SSaurabh.Mishra@Sun.COM #define	PHY_CDTS_STAT_OK	0x0000
186*11353SSaurabh.Mishra@Sun.COM #define	PHY_CDTS_STAT_SHORT	0x0100
187*11353SSaurabh.Mishra@Sun.COM #define	PHY_CDTS_STAT_OPEN	0x0200
188*11353SSaurabh.Mishra@Sun.COM #define	PHY_CDTS_STAT_INVAL	0x0300
189*11353SSaurabh.Mishra@Sun.COM #define	PHY_CDTS_STAT_MASK	0x0300
190*11353SSaurabh.Mishra@Sun.COM 
191*11353SSaurabh.Mishra@Sun.COM /*
192*11353SSaurabh.Mishra@Sun.COM  * DMA CFG registers (L1 specific)
193*11353SSaurabh.Mishra@Sun.COM  */
194*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_ENB		0x00000400
195*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_ENB		0x00000800
196*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_BURST_MASK	0x07
197*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_BURST_SHIFT	4
198*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_BURST_MASK	0x07
199*11353SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_BURST_SHIFT	7
200*11353SSaurabh.Mishra@Sun.COM 
201*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_ENB		0x80000000
202*11353SSaurabh.Mishra@Sun.COM 
203*11353SSaurabh.Mishra@Sun.COM #define	L1_RD_LEN_MASK		0x0000FFFF
204*11353SSaurabh.Mishra@Sun.COM #define	L1_RD_LEN_SHIFT	0
205*11353SSaurabh.Mishra@Sun.COM 
206*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RD_ADDR		0x1500
207*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RD_LEN			0x1504
208*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RRD_ADDR		0x1508
209*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RRD_LEN		0x150C
210*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TPD_ADDR		0x1510
211*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TPD_LEN		0x1514
212*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TRD_ADDR		0x1518
213*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TRD_LEN		0x151C
214*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RX_FIFO_ADDR		0x1520
215*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_RX_FIFO_LEN		0x1524
216*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TX_FIFO_ADDR		0x1528
217*11353SSaurabh.Mishra@Sun.COM #define	L1_SRAM_TX_FIFO_LEN		0x152C
218*11353SSaurabh.Mishra@Sun.COM 
219*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_BURST_MASK		0x000000FF
220*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RRD_BURST_THRESH_MASK	0x0000FF00
221*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_PREF_MIN_IPG_MASK	0x001F0000
222*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_CUT_THROUGH_ENB		0x40000000
223*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_ENB			0x80000000
224*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_BURST_SHIFT		0
225*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_BURST_DEFAULT	8
226*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RRD_BURST_THRESH_SHIFT	8
227*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RRD_BURST_THRESH_DEFAULT 8
228*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_PREF_MIN_IPG_SHIFT	16
229*11353SSaurabh.Mishra@Sun.COM #define	RXQ_CFG_RD_PREF_MIN_IPG_DEFAULT	1
230*11353SSaurabh.Mishra@Sun.COM 
231*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_ENB			0x00000020
232*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_ENHANCED_MODE		0x00000040
233*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TPD_FETCH_THRESH_MASK	0x00003F00
234*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TX_FIFO_BURST_MASK	0xFFFF0000
235*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TPD_BURST_SHIFT		0
236*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TPD_BURST_DEFAULT	4
237*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TPD_FETCH_THRESH_SHIFT	8
238*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TPD_FETCH_DEFAULT	16
239*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TX_FIFO_BURST_SHIFT	16
240*11353SSaurabh.Mishra@Sun.COM #define	TXQ_CFG_TX_FIFO_BURST_DEFAULT	256
241*11353SSaurabh.Mishra@Sun.COM 
242*11353SSaurabh.Mishra@Sun.COM #define	L1_TX_JUMBO_TPD_TH_IPG		0x1584
243*11353SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_TPD_TH_MASK		0x000007FF
244*11353SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_TPD_IPG_MASK		0x001F0000
245*11353SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_TPD_TH_SHIFT		0
246*11353SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_TPD_IPG_SHIFT		16
247*11353SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_TPD_IPG_DEFAULT	1
248*11353SSaurabh.Mishra@Sun.COM 
249*11353SSaurabh.Mishra@Sun.COM /* CMB DMA Write Threshold Register */
250*11353SSaurabh.Mishra@Sun.COM #define	L1_CMB_WR_THRESH		0x15D4
251*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_RRD_MASK		0x000007FF
252*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_TPD_MASK		0x07FF0000
253*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_RRD_SHIFT		0
254*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_RRD_DEFAULT	4
255*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_TPD_SHIFT		16
256*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_THRESH_TPD_DEFAULT	4
257*11353SSaurabh.Mishra@Sun.COM 
258*11353SSaurabh.Mishra@Sun.COM /* SMB auto DMA timer register */
259*11353SSaurabh.Mishra@Sun.COM #define	L1_SMB_TIMER			0x15E4
260*11353SSaurabh.Mishra@Sun.COM 
261*11353SSaurabh.Mishra@Sun.COM #define	L1_CSMB_CTRL			0x15D0
262*11353SSaurabh.Mishra@Sun.COM #define	CSMB_CTRL_CMB_KICK		0x00000001
263*11353SSaurabh.Mishra@Sun.COM #define	CSMB_CTRL_SMB_KICK		0x00000002
264*11353SSaurabh.Mishra@Sun.COM #define	CSMB_CTRL_CMB_ENB		0x00000004
265*11353SSaurabh.Mishra@Sun.COM #define	CSMB_CTRL_SMB_ENB		0x00000008
266*11353SSaurabh.Mishra@Sun.COM 
267*11353SSaurabh.Mishra@Sun.COM #define	INTR_TX_FIFO_UNDERRUN		0x00000040
268*11353SSaurabh.Mishra@Sun.COM #define	INTR_RX_FIFO_OFLOW		0x00000008
269*11353SSaurabh.Mishra@Sun.COM #define	INTR_TX_DMA			0x00040000
270*11353SSaurabh.Mishra@Sun.COM #define	INTR_RX_DMA			0x00080000
271*11353SSaurabh.Mishra@Sun.COM #define	INTR_CMB_RX			0x00100000
272*11353SSaurabh.Mishra@Sun.COM #define	INTR_CMB_TX			0x00200000
273*11353SSaurabh.Mishra@Sun.COM #define	INTR_MAC_RX			0x00400000
274*11353SSaurabh.Mishra@Sun.COM #define	INTR_MAC_TX			0x00800000
275*11353SSaurabh.Mishra@Sun.COM #define	INTR_UNDERRUN			0x01000000
276*11353SSaurabh.Mishra@Sun.COM #define	INTR_FRAME_ERROR		0x02000000
277*11353SSaurabh.Mishra@Sun.COM #define	INTR_FRAME_OK			0x04000000
278*11353SSaurabh.Mishra@Sun.COM #define	INTR_CSUM_ERROR			0x08000000
279*11353SSaurabh.Mishra@Sun.COM #define	INTR_PHY_LINK_DOWN		0x10000000
280*11353SSaurabh.Mishra@Sun.COM #define	INTR_DIS_SMB			0x20000000
281*11353SSaurabh.Mishra@Sun.COM #define	INTR_DIS_DMA			0x40000000
282*11353SSaurabh.Mishra@Sun.COM #define	INTR_DIS_INT			0x80000000
283*11353SSaurabh.Mishra@Sun.COM 
284*11353SSaurabh.Mishra@Sun.COM #define	L1_INTRS	\
285*11353SSaurabh.Mishra@Sun.COM 	(INTR_SMB | INTR_DMA_RD_TO_RST | INTR_DMA_WR_TO_RST |	\
286*11353SSaurabh.Mishra@Sun.COM 	INTR_CMB_TX | INTR_CMB_RX | INTR_RX_FIFO_OFLOW | INTR_TX_FIFO_UNDERRUN)
287*11353SSaurabh.Mishra@Sun.COM 
288*11353SSaurabh.Mishra@Sun.COM #define	L1_RXQ_RRD_PAUSE_THRESH	0x15AC
289*11353SSaurabh.Mishra@Sun.COM #define	RXQ_RRD_PAUSE_THRESH_HI_MASK	0x00000FFF
290*11353SSaurabh.Mishra@Sun.COM #define	RXQ_RRD_PAUSE_THRESH_LO_MASK	0x0FFF0000
291*11353SSaurabh.Mishra@Sun.COM #define	RXQ_RRD_PAUSE_THRESH_HI_SHIFT	0
292*11353SSaurabh.Mishra@Sun.COM #define	RXQ_RRD_PAUSE_THRESH_LO_SHIFT	16
293*11353SSaurabh.Mishra@Sun.COM 
294*11353SSaurabh.Mishra@Sun.COM /* RX/TX count-down timer to trigger CMB-write. */
295*11353SSaurabh.Mishra@Sun.COM #define	L1_CMB_WR_TIMER			0x15D8
296*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_TIMER_RX_MASK		0x0000FFFF
297*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_TIMER_TX_MASK		0xFFFF0000
298*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_TIMER_RX_SHIFT		0
299*11353SSaurabh.Mishra@Sun.COM #define	CMB_WR_TIMER_TX_SHIFT		16
300*11353SSaurabh.Mishra@Sun.COM 
301*11353SSaurabh.Mishra@Sun.COM /*
302*11353SSaurabh.Mishra@Sun.COM  * Useful macros.
303*11353SSaurabh.Mishra@Sun.COM  */
304*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_NSEGS(x)	\
305*11353SSaurabh.Mishra@Sun.COM 	(((x) & L1_RRD_NSEGS_MASK) >> L1_RRD_NSEGS_SHIFT)
306*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_CONS(x)	\
307*11353SSaurabh.Mishra@Sun.COM 	(((x) & L1_RRD_CONS_MASK) >> L1_RRD_CONS_SHIFT)
308*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_CSUM(x)	\
309*11353SSaurabh.Mishra@Sun.COM 	(((x) & L1_RRD_CSUM_MASK) >> L1_RRD_CSUM_SHIFT)
310*11353SSaurabh.Mishra@Sun.COM #define	L1_RX_BYTES(x)	\
311*11353SSaurabh.Mishra@Sun.COM 	(((x) & L1_RRD_LEN_MASK) >> L1_RRD_LEN_SHIFT)
312*11353SSaurabh.Mishra@Sun.COM 
313*11353SSaurabh.Mishra@Sun.COM 
314*11353SSaurabh.Mishra@Sun.COM #ifdef __cplusplus
315*11353SSaurabh.Mishra@Sun.COM }
316*11353SSaurabh.Mishra@Sun.COM #endif
317*11353SSaurabh.Mishra@Sun.COM 
318*11353SSaurabh.Mishra@Sun.COM #endif	/* _ATGE_L1_REG_H */
319