xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/sibyte/sb1250_genbus.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     *  Generic Bus Constants			 File: sb1250_genbus.h
6*4882a593Smuzhiyun     *
7*4882a593Smuzhiyun     *  This module contains constants and macros useful for
8*4882a593Smuzhiyun     *  manipulating the SB1250's Generic Bus interface
9*4882a593Smuzhiyun     *
10*4882a593Smuzhiyun     *  SB1250 specification level:  User's manual 10/21/02
11*4882a593Smuzhiyun     *  BCM1280 specification level: User's Manual 11/14/03
12*4882a593Smuzhiyun     *
13*4882a593Smuzhiyun     *********************************************************************
14*4882a593Smuzhiyun     *
15*4882a593Smuzhiyun     *  Copyright 2000, 2001, 2002, 2003
16*4882a593Smuzhiyun     *  Broadcom Corporation. All rights reserved.
17*4882a593Smuzhiyun     *
18*4882a593Smuzhiyun     ********************************************************************* */
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #ifndef _SB1250_GENBUS_H
22*4882a593Smuzhiyun #define _SB1250_GENBUS_H
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h>
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun /*
27*4882a593Smuzhiyun  * Generic Bus Region Configuration Registers (Table 11-4)
28*4882a593Smuzhiyun  */
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define S_IO_RDY_ACTIVE		0
31*4882a593Smuzhiyun #define M_IO_RDY_ACTIVE		_SB_MAKEMASK1(S_IO_RDY_ACTIVE)
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #define S_IO_ENA_RDY		1
34*4882a593Smuzhiyun #define M_IO_ENA_RDY		_SB_MAKEMASK1(S_IO_ENA_RDY)
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #define S_IO_WIDTH_SEL		2
37*4882a593Smuzhiyun #define M_IO_WIDTH_SEL		_SB_MAKEMASK(2, S_IO_WIDTH_SEL)
38*4882a593Smuzhiyun #define K_IO_WIDTH_SEL_1	0
39*4882a593Smuzhiyun #define K_IO_WIDTH_SEL_2	1
40*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) \
41*4882a593Smuzhiyun     || SIBYTE_HDR_FEATURE_CHIP(1480)
42*4882a593Smuzhiyun #define K_IO_WIDTH_SEL_1L	2
43*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
44*4882a593Smuzhiyun #define K_IO_WIDTH_SEL_4	3
45*4882a593Smuzhiyun #define V_IO_WIDTH_SEL(x)	_SB_MAKEVALUE(x, S_IO_WIDTH_SEL)
46*4882a593Smuzhiyun #define G_IO_WIDTH_SEL(x)	_SB_GETVALUE(x, S_IO_WIDTH_SEL, M_IO_WIDTH_SEL)
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #define S_IO_PARITY_ENA		4
49*4882a593Smuzhiyun #define M_IO_PARITY_ENA		_SB_MAKEMASK1(S_IO_PARITY_ENA)
50*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) \
51*4882a593Smuzhiyun     || SIBYTE_HDR_FEATURE_CHIP(1480)
52*4882a593Smuzhiyun #define S_IO_BURST_EN		5
53*4882a593Smuzhiyun #define M_IO_BURST_EN		_SB_MAKEMASK1(S_IO_BURST_EN)
54*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
55*4882a593Smuzhiyun #define S_IO_PARITY_ODD		6
56*4882a593Smuzhiyun #define M_IO_PARITY_ODD		_SB_MAKEMASK1(S_IO_PARITY_ODD)
57*4882a593Smuzhiyun #define S_IO_NONMUX		7
58*4882a593Smuzhiyun #define M_IO_NONMUX		_SB_MAKEMASK1(S_IO_NONMUX)
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #define S_IO_TIMEOUT		8
61*4882a593Smuzhiyun #define M_IO_TIMEOUT		_SB_MAKEMASK(8, S_IO_TIMEOUT)
62*4882a593Smuzhiyun #define V_IO_TIMEOUT(x)		_SB_MAKEVALUE(x, S_IO_TIMEOUT)
63*4882a593Smuzhiyun #define G_IO_TIMEOUT(x)		_SB_GETVALUE(x, S_IO_TIMEOUT, M_IO_TIMEOUT)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun /*
66*4882a593Smuzhiyun  * Generic Bus Region Size register (Table 11-5)
67*4882a593Smuzhiyun  */
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun #define S_IO_MULT_SIZE		0
70*4882a593Smuzhiyun #define M_IO_MULT_SIZE		_SB_MAKEMASK(12, S_IO_MULT_SIZE)
71*4882a593Smuzhiyun #define V_IO_MULT_SIZE(x)	_SB_MAKEVALUE(x, S_IO_MULT_SIZE)
72*4882a593Smuzhiyun #define G_IO_MULT_SIZE(x)	_SB_GETVALUE(x, S_IO_MULT_SIZE, M_IO_MULT_SIZE)
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #define S_IO_REGSIZE		16	 /* # bits to shift size for this reg */
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun /*
77*4882a593Smuzhiyun  * Generic Bus Region Address (Table 11-6)
78*4882a593Smuzhiyun  */
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define S_IO_START_ADDR		0
81*4882a593Smuzhiyun #define M_IO_START_ADDR		_SB_MAKEMASK(14, S_IO_START_ADDR)
82*4882a593Smuzhiyun #define V_IO_START_ADDR(x)	_SB_MAKEVALUE(x, S_IO_START_ADDR)
83*4882a593Smuzhiyun #define G_IO_START_ADDR(x)	_SB_GETVALUE(x, S_IO_START_ADDR, M_IO_START_ADDR)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define S_IO_ADDRBASE		16	 /* # bits to shift addr for this reg */
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #define M_IO_BLK_CACHE		_SB_MAKEMASK1(15)
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun /*
91*4882a593Smuzhiyun  * Generic Bus Timing 0 Registers (Table 11-7)
92*4882a593Smuzhiyun  */
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define S_IO_ALE_WIDTH		0
95*4882a593Smuzhiyun #define M_IO_ALE_WIDTH		_SB_MAKEMASK(3, S_IO_ALE_WIDTH)
96*4882a593Smuzhiyun #define V_IO_ALE_WIDTH(x)	_SB_MAKEVALUE(x, S_IO_ALE_WIDTH)
97*4882a593Smuzhiyun #define G_IO_ALE_WIDTH(x)	_SB_GETVALUE(x, S_IO_ALE_WIDTH, M_IO_ALE_WIDTH)
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) \
100*4882a593Smuzhiyun     || SIBYTE_HDR_FEATURE_CHIP(1480)
101*4882a593Smuzhiyun #define M_IO_EARLY_CS		_SB_MAKEMASK1(3)
102*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun #define S_IO_ALE_TO_CS		4
105*4882a593Smuzhiyun #define M_IO_ALE_TO_CS		_SB_MAKEMASK(2, S_IO_ALE_TO_CS)
106*4882a593Smuzhiyun #define V_IO_ALE_TO_CS(x)	_SB_MAKEVALUE(x, S_IO_ALE_TO_CS)
107*4882a593Smuzhiyun #define G_IO_ALE_TO_CS(x)	_SB_GETVALUE(x, S_IO_ALE_TO_CS, M_IO_ALE_TO_CS)
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) \
110*4882a593Smuzhiyun     || SIBYTE_HDR_FEATURE_CHIP(1480)
111*4882a593Smuzhiyun #define S_IO_BURST_WIDTH	   _SB_MAKE64(6)
112*4882a593Smuzhiyun #define M_IO_BURST_WIDTH	   _SB_MAKEMASK(2, S_IO_BURST_WIDTH)
113*4882a593Smuzhiyun #define V_IO_BURST_WIDTH(x)	   _SB_MAKEVALUE(x, S_IO_BURST_WIDTH)
114*4882a593Smuzhiyun #define G_IO_BURST_WIDTH(x)	   _SB_GETVALUE(x, S_IO_BURST_WIDTH, M_IO_BURST_WIDTH)
115*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define S_IO_CS_WIDTH		8
118*4882a593Smuzhiyun #define M_IO_CS_WIDTH		_SB_MAKEMASK(5, S_IO_CS_WIDTH)
119*4882a593Smuzhiyun #define V_IO_CS_WIDTH(x)	_SB_MAKEVALUE(x, S_IO_CS_WIDTH)
120*4882a593Smuzhiyun #define G_IO_CS_WIDTH(x)	_SB_GETVALUE(x, S_IO_CS_WIDTH, M_IO_CS_WIDTH)
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun #define S_IO_RDY_SMPLE		13
123*4882a593Smuzhiyun #define M_IO_RDY_SMPLE		_SB_MAKEMASK(3, S_IO_RDY_SMPLE)
124*4882a593Smuzhiyun #define V_IO_RDY_SMPLE(x)	_SB_MAKEVALUE(x, S_IO_RDY_SMPLE)
125*4882a593Smuzhiyun #define G_IO_RDY_SMPLE(x)	_SB_GETVALUE(x, S_IO_RDY_SMPLE, M_IO_RDY_SMPLE)
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /*
129*4882a593Smuzhiyun  * Generic Bus Timing 1 Registers (Table 11-8)
130*4882a593Smuzhiyun  */
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #define S_IO_ALE_TO_WRITE	0
133*4882a593Smuzhiyun #define M_IO_ALE_TO_WRITE	_SB_MAKEMASK(3, S_IO_ALE_TO_WRITE)
134*4882a593Smuzhiyun #define V_IO_ALE_TO_WRITE(x)	_SB_MAKEVALUE(x, S_IO_ALE_TO_WRITE)
135*4882a593Smuzhiyun #define G_IO_ALE_TO_WRITE(x)	_SB_GETVALUE(x, S_IO_ALE_TO_WRITE, M_IO_ALE_TO_WRITE)
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) \
138*4882a593Smuzhiyun     || SIBYTE_HDR_FEATURE_CHIP(1480)
139*4882a593Smuzhiyun #define M_IO_RDY_SYNC		_SB_MAKEMASK1(3)
140*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define S_IO_WRITE_WIDTH	4
143*4882a593Smuzhiyun #define M_IO_WRITE_WIDTH	_SB_MAKEMASK(4, S_IO_WRITE_WIDTH)
144*4882a593Smuzhiyun #define V_IO_WRITE_WIDTH(x)	_SB_MAKEVALUE(x, S_IO_WRITE_WIDTH)
145*4882a593Smuzhiyun #define G_IO_WRITE_WIDTH(x)	_SB_GETVALUE(x, S_IO_WRITE_WIDTH, M_IO_WRITE_WIDTH)
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun #define S_IO_IDLE_CYCLE		8
148*4882a593Smuzhiyun #define M_IO_IDLE_CYCLE		_SB_MAKEMASK(4, S_IO_IDLE_CYCLE)
149*4882a593Smuzhiyun #define V_IO_IDLE_CYCLE(x)	_SB_MAKEVALUE(x, S_IO_IDLE_CYCLE)
150*4882a593Smuzhiyun #define G_IO_IDLE_CYCLE(x)	_SB_GETVALUE(x, S_IO_IDLE_CYCLE, M_IO_IDLE_CYCLE)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define S_IO_OE_TO_CS		12
153*4882a593Smuzhiyun #define M_IO_OE_TO_CS		_SB_MAKEMASK(2, S_IO_OE_TO_CS)
154*4882a593Smuzhiyun #define V_IO_OE_TO_CS(x)	_SB_MAKEVALUE(x, S_IO_OE_TO_CS)
155*4882a593Smuzhiyun #define G_IO_OE_TO_CS(x)	_SB_GETVALUE(x, S_IO_OE_TO_CS, M_IO_OE_TO_CS)
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #define S_IO_CS_TO_OE		14
158*4882a593Smuzhiyun #define M_IO_CS_TO_OE		_SB_MAKEMASK(2, S_IO_CS_TO_OE)
159*4882a593Smuzhiyun #define V_IO_CS_TO_OE(x)	_SB_MAKEVALUE(x, S_IO_CS_TO_OE)
160*4882a593Smuzhiyun #define G_IO_CS_TO_OE(x)	_SB_GETVALUE(x, S_IO_CS_TO_OE, M_IO_CS_TO_OE)
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun /*
163*4882a593Smuzhiyun  * Generic Bus Interrupt Status Register (Table 11-9)
164*4882a593Smuzhiyun  */
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun #define M_IO_CS_ERR_INT		_SB_MAKEMASK(0, 8)
167*4882a593Smuzhiyun #define M_IO_CS0_ERR_INT	_SB_MAKEMASK1(0)
168*4882a593Smuzhiyun #define M_IO_CS1_ERR_INT	_SB_MAKEMASK1(1)
169*4882a593Smuzhiyun #define M_IO_CS2_ERR_INT	_SB_MAKEMASK1(2)
170*4882a593Smuzhiyun #define M_IO_CS3_ERR_INT	_SB_MAKEMASK1(3)
171*4882a593Smuzhiyun #define M_IO_CS4_ERR_INT	_SB_MAKEMASK1(4)
172*4882a593Smuzhiyun #define M_IO_CS5_ERR_INT	_SB_MAKEMASK1(5)
173*4882a593Smuzhiyun #define M_IO_CS6_ERR_INT	_SB_MAKEMASK1(6)
174*4882a593Smuzhiyun #define M_IO_CS7_ERR_INT	_SB_MAKEMASK1(7)
175*4882a593Smuzhiyun 
176*4882a593Smuzhiyun #define M_IO_RD_PAR_INT		_SB_MAKEMASK1(9)
177*4882a593Smuzhiyun #define M_IO_TIMEOUT_INT	_SB_MAKEMASK1(10)
178*4882a593Smuzhiyun #define M_IO_ILL_ADDR_INT	_SB_MAKEMASK1(11)
179*4882a593Smuzhiyun #define M_IO_MULT_CS_INT	_SB_MAKEMASK1(12)
180*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
181*4882a593Smuzhiyun #define M_IO_COH_ERR		_SB_MAKEMASK1(14)
182*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
183*4882a593Smuzhiyun 
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun /*
186*4882a593Smuzhiyun  * Generic Bus Output Drive Control Register 0 (Table 14-18)
187*4882a593Smuzhiyun  */
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun #define S_IO_SLEW0		0
190*4882a593Smuzhiyun #define M_IO_SLEW0		_SB_MAKEMASK(2, S_IO_SLEW0)
191*4882a593Smuzhiyun #define V_IO_SLEW0(x)		_SB_MAKEVALUE(x, S_IO_SLEW0)
192*4882a593Smuzhiyun #define G_IO_SLEW0(x)		_SB_GETVALUE(x, S_IO_SLEW0, M_IO_SLEW0)
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #define S_IO_DRV_A		2
195*4882a593Smuzhiyun #define M_IO_DRV_A		_SB_MAKEMASK(2, S_IO_DRV_A)
196*4882a593Smuzhiyun #define V_IO_DRV_A(x)		_SB_MAKEVALUE(x, S_IO_DRV_A)
197*4882a593Smuzhiyun #define G_IO_DRV_A(x)		_SB_GETVALUE(x, S_IO_DRV_A, M_IO_DRV_A)
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define S_IO_DRV_B		6
200*4882a593Smuzhiyun #define M_IO_DRV_B		_SB_MAKEMASK(2, S_IO_DRV_B)
201*4882a593Smuzhiyun #define V_IO_DRV_B(x)		_SB_MAKEVALUE(x, S_IO_DRV_B)
202*4882a593Smuzhiyun #define G_IO_DRV_B(x)		_SB_GETVALUE(x, S_IO_DRV_B, M_IO_DRV_B)
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun #define S_IO_DRV_C		10
205*4882a593Smuzhiyun #define M_IO_DRV_C		_SB_MAKEMASK(2, S_IO_DRV_C)
206*4882a593Smuzhiyun #define V_IO_DRV_C(x)		_SB_MAKEVALUE(x, S_IO_DRV_C)
207*4882a593Smuzhiyun #define G_IO_DRV_C(x)		_SB_GETVALUE(x, S_IO_DRV_C, M_IO_DRV_C)
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun #define S_IO_DRV_D		14
210*4882a593Smuzhiyun #define M_IO_DRV_D		_SB_MAKEMASK(2, S_IO_DRV_D)
211*4882a593Smuzhiyun #define V_IO_DRV_D(x)		_SB_MAKEVALUE(x, S_IO_DRV_D)
212*4882a593Smuzhiyun #define G_IO_DRV_D(x)		_SB_GETVALUE(x, S_IO_DRV_D, M_IO_DRV_D)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun /*
215*4882a593Smuzhiyun  * Generic Bus Output Drive Control Register 1 (Table 14-19)
216*4882a593Smuzhiyun  */
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define S_IO_DRV_E		2
219*4882a593Smuzhiyun #define M_IO_DRV_E		_SB_MAKEMASK(2, S_IO_DRV_E)
220*4882a593Smuzhiyun #define V_IO_DRV_E(x)		_SB_MAKEVALUE(x, S_IO_DRV_E)
221*4882a593Smuzhiyun #define G_IO_DRV_E(x)		_SB_GETVALUE(x, S_IO_DRV_E, M_IO_DRV_E)
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun #define S_IO_DRV_F		6
224*4882a593Smuzhiyun #define M_IO_DRV_F		_SB_MAKEMASK(2, S_IO_DRV_F)
225*4882a593Smuzhiyun #define V_IO_DRV_F(x)		_SB_MAKEVALUE(x, S_IO_DRV_F)
226*4882a593Smuzhiyun #define G_IO_DRV_F(x)		_SB_GETVALUE(x, S_IO_DRV_F, M_IO_DRV_F)
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun #define S_IO_SLEW1		8
229*4882a593Smuzhiyun #define M_IO_SLEW1		_SB_MAKEMASK(2, S_IO_SLEW1)
230*4882a593Smuzhiyun #define V_IO_SLEW1(x)		_SB_MAKEVALUE(x, S_IO_SLEW1)
231*4882a593Smuzhiyun #define G_IO_SLEW1(x)		_SB_GETVALUE(x, S_IO_SLEW1, M_IO_SLEW1)
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun #define S_IO_DRV_G		10
234*4882a593Smuzhiyun #define M_IO_DRV_G		_SB_MAKEMASK(2, S_IO_DRV_G)
235*4882a593Smuzhiyun #define V_IO_DRV_G(x)		_SB_MAKEVALUE(x, S_IO_DRV_G)
236*4882a593Smuzhiyun #define G_IO_DRV_G(x)		_SB_GETVALUE(x, S_IO_DRV_G, M_IO_DRV_G)
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun #define S_IO_SLEW2		12
239*4882a593Smuzhiyun #define M_IO_SLEW2		_SB_MAKEMASK(2, S_IO_SLEW2)
240*4882a593Smuzhiyun #define V_IO_SLEW2(x)		_SB_MAKEVALUE(x, S_IO_SLEW2)
241*4882a593Smuzhiyun #define G_IO_SLEW2(x)		_SB_GETVALUE(x, S_IO_SLEW2, M_IO_SLEW2)
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #define S_IO_DRV_H		14
244*4882a593Smuzhiyun #define M_IO_DRV_H		_SB_MAKEMASK(2, S_IO_DRV_H)
245*4882a593Smuzhiyun #define V_IO_DRV_H(x)		_SB_MAKEVALUE(x, S_IO_DRV_H)
246*4882a593Smuzhiyun #define G_IO_DRV_H(x)		_SB_GETVALUE(x, S_IO_DRV_H, M_IO_DRV_H)
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun /*
249*4882a593Smuzhiyun  * Generic Bus Output Drive Control Register 2 (Table 14-20)
250*4882a593Smuzhiyun  */
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun #define S_IO_DRV_J		2
253*4882a593Smuzhiyun #define M_IO_DRV_J		_SB_MAKEMASK(2, S_IO_DRV_J)
254*4882a593Smuzhiyun #define V_IO_DRV_J(x)		_SB_MAKEVALUE(x, S_IO_DRV_J)
255*4882a593Smuzhiyun #define G_IO_DRV_J(x)		_SB_GETVALUE(x, S_IO_DRV_J, M_IO_DRV_J)
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun #define S_IO_DRV_K		6
258*4882a593Smuzhiyun #define M_IO_DRV_K		_SB_MAKEMASK(2, S_IO_DRV_K)
259*4882a593Smuzhiyun #define V_IO_DRV_K(x)		_SB_MAKEVALUE(x, S_IO_DRV_K)
260*4882a593Smuzhiyun #define G_IO_DRV_K(x)		_SB_GETVALUE(x, S_IO_DRV_K, M_IO_DRV_K)
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun #define S_IO_DRV_L		10
263*4882a593Smuzhiyun #define M_IO_DRV_L		_SB_MAKEMASK(2, S_IO_DRV_L)
264*4882a593Smuzhiyun #define V_IO_DRV_L(x)		_SB_MAKEVALUE(x, S_IO_DRV_L)
265*4882a593Smuzhiyun #define G_IO_DRV_L(x)		_SB_GETVALUE(x, S_IO_DRV_L, M_IO_DRV_L)
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun #define S_IO_DRV_M		14
268*4882a593Smuzhiyun #define M_IO_DRV_M		_SB_MAKEMASK(2, S_IO_DRV_M)
269*4882a593Smuzhiyun #define V_IO_DRV_M(x)		_SB_MAKEVALUE(x, S_IO_DRV_M)
270*4882a593Smuzhiyun #define G_IO_DRV_M(x)		_SB_GETVALUE(x, S_IO_DRV_M, M_IO_DRV_M)
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun /*
273*4882a593Smuzhiyun  * Generic Bus Output Drive Control Register 3 (Table 14-21)
274*4882a593Smuzhiyun  */
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #define S_IO_SLEW3		0
277*4882a593Smuzhiyun #define M_IO_SLEW3		_SB_MAKEMASK(2, S_IO_SLEW3)
278*4882a593Smuzhiyun #define V_IO_SLEW3(x)		_SB_MAKEVALUE(x, S_IO_SLEW3)
279*4882a593Smuzhiyun #define G_IO_SLEW3(x)		_SB_GETVALUE(x, S_IO_SLEW3, M_IO_SLEW3)
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun #define S_IO_DRV_N		2
282*4882a593Smuzhiyun #define M_IO_DRV_N		_SB_MAKEMASK(2, S_IO_DRV_N)
283*4882a593Smuzhiyun #define V_IO_DRV_N(x)		_SB_MAKEVALUE(x, S_IO_DRV_N)
284*4882a593Smuzhiyun #define G_IO_DRV_N(x)		_SB_GETVALUE(x, S_IO_DRV_N, M_IO_DRV_N)
285*4882a593Smuzhiyun 
286*4882a593Smuzhiyun #define S_IO_DRV_P		6
287*4882a593Smuzhiyun #define M_IO_DRV_P		_SB_MAKEMASK(2, S_IO_DRV_P)
288*4882a593Smuzhiyun #define V_IO_DRV_P(x)		_SB_MAKEVALUE(x, S_IO_DRV_P)
289*4882a593Smuzhiyun #define G_IO_DRV_P(x)		_SB_GETVALUE(x, S_IO_DRV_P, M_IO_DRV_P)
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun #define S_IO_DRV_Q		10
292*4882a593Smuzhiyun #define M_IO_DRV_Q		_SB_MAKEMASK(2, S_IO_DRV_Q)
293*4882a593Smuzhiyun #define V_IO_DRV_Q(x)		_SB_MAKEVALUE(x, S_IO_DRV_Q)
294*4882a593Smuzhiyun #define G_IO_DRV_Q(x)		_SB_GETVALUE(x, S_IO_DRV_Q, M_IO_DRV_Q)
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun #define S_IO_DRV_R		14
297*4882a593Smuzhiyun #define M_IO_DRV_R		_SB_MAKEMASK(2, S_IO_DRV_R)
298*4882a593Smuzhiyun #define V_IO_DRV_R(x)		_SB_MAKEVALUE(x, S_IO_DRV_R)
299*4882a593Smuzhiyun #define G_IO_DRV_R(x)		_SB_GETVALUE(x, S_IO_DRV_R, M_IO_DRV_R)
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun /*
303*4882a593Smuzhiyun  * PCMCIA configuration register (Table 12-6)
304*4882a593Smuzhiyun  */
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun #define M_PCMCIA_CFG_ATTRMEM	_SB_MAKEMASK1(0)
307*4882a593Smuzhiyun #define M_PCMCIA_CFG_3VEN	_SB_MAKEMASK1(1)
308*4882a593Smuzhiyun #define M_PCMCIA_CFG_5VEN	_SB_MAKEMASK1(2)
309*4882a593Smuzhiyun #define M_PCMCIA_CFG_VPPEN	_SB_MAKEMASK1(3)
310*4882a593Smuzhiyun #define M_PCMCIA_CFG_RESET	_SB_MAKEMASK1(4)
311*4882a593Smuzhiyun #define M_PCMCIA_CFG_APWRONEN	_SB_MAKEMASK1(5)
312*4882a593Smuzhiyun #define M_PCMCIA_CFG_CDMASK	_SB_MAKEMASK1(6)
313*4882a593Smuzhiyun #define M_PCMCIA_CFG_WPMASK	_SB_MAKEMASK1(7)
314*4882a593Smuzhiyun #define M_PCMCIA_CFG_RDYMASK	_SB_MAKEMASK1(8)
315*4882a593Smuzhiyun #define M_PCMCIA_CFG_PWRCTL	_SB_MAKEMASK1(9)
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_CHIP(1480)
318*4882a593Smuzhiyun #define S_PCMCIA_MODE		16
319*4882a593Smuzhiyun #define M_PCMCIA_MODE		_SB_MAKEMASK(3, S_PCMCIA_MODE)
320*4882a593Smuzhiyun #define V_PCMCIA_MODE(x)	_SB_MAKEVALUE(x, S_PCMCIA_MODE)
321*4882a593Smuzhiyun #define G_PCMCIA_MODE(x)	_SB_GETVALUE(x, S_PCMCIA_MODE, M_PCMCIA_MODE)
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun #define K_PCMCIA_MODE_PCMA_NOB	0	/* standard PCMCIA "A", no "B" */
324*4882a593Smuzhiyun #define K_PCMCIA_MODE_IDEA_NOB	1	/* IDE "A", no "B" */
325*4882a593Smuzhiyun #define K_PCMCIA_MODE_PCMIOA_NOB 2	/* PCMCIA with I/O "A", no "B" */
326*4882a593Smuzhiyun #define K_PCMCIA_MODE_PCMA_PCMB 4	/* standard PCMCIA "A", standard PCMCIA "B" */
327*4882a593Smuzhiyun #define K_PCMCIA_MODE_IDEA_PCMB 5	/* IDE "A", standard PCMCIA "B" */
328*4882a593Smuzhiyun #define K_PCMCIA_MODE_PCMA_IDEB 6	/* standard PCMCIA "A", IDE "B" */
329*4882a593Smuzhiyun #define K_PCMCIA_MODE_IDEA_IDEB 7	/* IDE "A", IDE "B" */
330*4882a593Smuzhiyun #endif
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun /*
334*4882a593Smuzhiyun  * PCMCIA status register (Table 12-7)
335*4882a593Smuzhiyun  */
336*4882a593Smuzhiyun 
337*4882a593Smuzhiyun #define M_PCMCIA_STATUS_CD1	_SB_MAKEMASK1(0)
338*4882a593Smuzhiyun #define M_PCMCIA_STATUS_CD2	_SB_MAKEMASK1(1)
339*4882a593Smuzhiyun #define M_PCMCIA_STATUS_VS1	_SB_MAKEMASK1(2)
340*4882a593Smuzhiyun #define M_PCMCIA_STATUS_VS2	_SB_MAKEMASK1(3)
341*4882a593Smuzhiyun #define M_PCMCIA_STATUS_WP	_SB_MAKEMASK1(4)
342*4882a593Smuzhiyun #define M_PCMCIA_STATUS_RDY	_SB_MAKEMASK1(5)
343*4882a593Smuzhiyun #define M_PCMCIA_STATUS_3VEN	_SB_MAKEMASK1(6)
344*4882a593Smuzhiyun #define M_PCMCIA_STATUS_5VEN	_SB_MAKEMASK1(7)
345*4882a593Smuzhiyun #define M_PCMCIA_STATUS_CDCHG	_SB_MAKEMASK1(8)
346*4882a593Smuzhiyun #define M_PCMCIA_STATUS_WPCHG	_SB_MAKEMASK1(9)
347*4882a593Smuzhiyun #define M_PCMCIA_STATUS_RDYCHG	_SB_MAKEMASK1(10)
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun /*
350*4882a593Smuzhiyun  * GPIO Interrupt Type Register (table 13-3)
351*4882a593Smuzhiyun  */
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun #define K_GPIO_INTR_DISABLE	0
354*4882a593Smuzhiyun #define K_GPIO_INTR_EDGE	1
355*4882a593Smuzhiyun #define K_GPIO_INTR_LEVEL	2
356*4882a593Smuzhiyun #define K_GPIO_INTR_SPLIT	3
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun #define S_GPIO_INTR_TYPEX(n)	(((n)/2)*2)
359*4882a593Smuzhiyun #define M_GPIO_INTR_TYPEX(n)	_SB_MAKEMASK(2, S_GPIO_INTR_TYPEX(n))
360*4882a593Smuzhiyun #define V_GPIO_INTR_TYPEX(n, x) _SB_MAKEVALUE(x, S_GPIO_INTR_TYPEX(n))
361*4882a593Smuzhiyun #define G_GPIO_INTR_TYPEX(n, x) _SB_GETVALUE(x, S_GPIO_INTR_TYPEX(n), M_GPIO_INTR_TYPEX(n))
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE0	0
364*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE0	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE0)
365*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE0(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE0)
366*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE0(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE0, M_GPIO_INTR_TYPE0)
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE2	2
369*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE2	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE2)
370*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE2(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE2)
371*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE2(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE2, M_GPIO_INTR_TYPE2)
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE4	4
374*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE4	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE4)
375*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE4(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE4)
376*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE4(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE4, M_GPIO_INTR_TYPE4)
377*4882a593Smuzhiyun 
378*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE6	6
379*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE6	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE6)
380*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE6(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE6)
381*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE6(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE6, M_GPIO_INTR_TYPE6)
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE8	8
384*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE8	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE8)
385*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE8(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE8)
386*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE8(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE8, M_GPIO_INTR_TYPE8)
387*4882a593Smuzhiyun 
388*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE10	10
389*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE10	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE10)
390*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE10(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE10)
391*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE10(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE10, M_GPIO_INTR_TYPE10)
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE12	12
394*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE12	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE12)
395*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE12(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE12)
396*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE12(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE12, M_GPIO_INTR_TYPE12)
397*4882a593Smuzhiyun 
398*4882a593Smuzhiyun #define S_GPIO_INTR_TYPE14	14
399*4882a593Smuzhiyun #define M_GPIO_INTR_TYPE14	_SB_MAKEMASK(2, S_GPIO_INTR_TYPE14)
400*4882a593Smuzhiyun #define V_GPIO_INTR_TYPE14(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_TYPE14)
401*4882a593Smuzhiyun #define G_GPIO_INTR_TYPE14(x)	_SB_GETVALUE(x, S_GPIO_INTR_TYPE14, M_GPIO_INTR_TYPE14)
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_CHIP(1480)
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun /*
406*4882a593Smuzhiyun  * GPIO Interrupt Additional Type Register
407*4882a593Smuzhiyun  */
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun #define K_GPIO_INTR_BOTHEDGE	0
410*4882a593Smuzhiyun #define K_GPIO_INTR_RISEEDGE	1
411*4882a593Smuzhiyun #define K_GPIO_INTR_UNPRED1	2
412*4882a593Smuzhiyun #define K_GPIO_INTR_UNPRED2	3
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPEX(n)	(((n)/2)*2)
415*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPEX(n)	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPEX(n))
416*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPEX(n, x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPEX(n))
417*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPEX(n, x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPEX(n), M_GPIO_INTR_ATYPEX(n))
418*4882a593Smuzhiyun 
419*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE0	0
420*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE0	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE0)
421*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE0(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE0)
422*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE0(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE0, M_GPIO_INTR_ATYPE0)
423*4882a593Smuzhiyun 
424*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE2	2
425*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE2	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE2)
426*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE2(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE2)
427*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE2(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE2, M_GPIO_INTR_ATYPE2)
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE4	4
430*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE4	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE4)
431*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE4(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE4)
432*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE4(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE4, M_GPIO_INTR_ATYPE4)
433*4882a593Smuzhiyun 
434*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE6	6
435*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE6	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE6)
436*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE6(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE6)
437*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE6(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE6, M_GPIO_INTR_ATYPE6)
438*4882a593Smuzhiyun 
439*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE8	8
440*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE8	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE8)
441*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE8(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE8)
442*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE8(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE8, M_GPIO_INTR_ATYPE8)
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE10	10
445*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE10	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE10)
446*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE10(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE10)
447*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE10(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE10, M_GPIO_INTR_ATYPE10)
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE12	12
450*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE12	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE12)
451*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE12(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE12)
452*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE12(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE12, M_GPIO_INTR_ATYPE12)
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun #define S_GPIO_INTR_ATYPE14	14
455*4882a593Smuzhiyun #define M_GPIO_INTR_ATYPE14	_SB_MAKEMASK(2, S_GPIO_INTR_ATYPE14)
456*4882a593Smuzhiyun #define V_GPIO_INTR_ATYPE14(x)	_SB_MAKEVALUE(x, S_GPIO_INTR_ATYPE14)
457*4882a593Smuzhiyun #define G_GPIO_INTR_ATYPE14(x)	_SB_GETVALUE(x, S_GPIO_INTR_ATYPE14, M_GPIO_INTR_ATYPE14)
458*4882a593Smuzhiyun #endif
459*4882a593Smuzhiyun 
460*4882a593Smuzhiyun 
461*4882a593Smuzhiyun #endif
462