xref: /onnv-gate/usr/src/uts/sun4u/starcat/sys/post/scat_const.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright (c) 1996-2000 by Sun Microsystems, Inc.
24*0Sstevel@tonic-gate  * All rights reserved.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate #ifndef	_SCAT_CONST_H
28*0Sstevel@tonic-gate #define	_SCAT_CONST_H
29*0Sstevel@tonic-gate 
30*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate /*
33*0Sstevel@tonic-gate  * This file contains definitions fundamental to the Starcat architecture;
34*0Sstevel@tonic-gate  * how many exps, how many of each asic type, etc.
35*0Sstevel@tonic-gate  */
36*0Sstevel@tonic-gate 
37*0Sstevel@tonic-gate /*
38*0Sstevel@tonic-gate  * POST DEVELOPERS:
39*0Sstevel@tonic-gate  * This file is copied to the OS workspace, and thus must abide by the OS
40*0Sstevel@tonic-gate  * coding standards.  This file must always pass cstyle and hdrchk.
41*0Sstevel@tonic-gate  */
42*0Sstevel@tonic-gate 
43*0Sstevel@tonic-gate #ifdef __cplusplus
44*0Sstevel@tonic-gate extern "C" {
45*0Sstevel@tonic-gate #endif
46*0Sstevel@tonic-gate 
47*0Sstevel@tonic-gate 
48*0Sstevel@tonic-gate #define	SSC_COUNT		(2)
49*0Sstevel@tonic-gate #define	SSC_MAX			(SSC_COUNT - 1)
50*0Sstevel@tonic-gate #define	IS_VALID_SSC(ssc)	((ssc) >= 0 && (ssc) < SSC_COUNT)
51*0Sstevel@tonic-gate 
52*0Sstevel@tonic-gate #define	EXP_COUNT		(18)
53*0Sstevel@tonic-gate #define	EXP_MAX			(EXP_COUNT - 1)
54*0Sstevel@tonic-gate #define	IS_VALID_EXP(exp)	((exp) >= 0 && (exp) < EXP_COUNT)
55*0Sstevel@tonic-gate 
56*0Sstevel@tonic-gate #define	EXB_COUNT		EXP_COUNT
57*0Sstevel@tonic-gate #define	EXB_MAX			EXP_MAX
58*0Sstevel@tonic-gate #define	IS_VALID_EXB(exb)	IS_VALID_EXP(exb)
59*0Sstevel@tonic-gate 
60*0Sstevel@tonic-gate #ifdef No_More_No_More
61*0Sstevel@tonic-gate 	/* Support this for awhile until we purge everywhere: */
62*0Sstevel@tonic-gate #define	NODE_COUNT		EXP_COUNT
63*0Sstevel@tonic-gate #define	NODE_MAX		EXP_MAX
64*0Sstevel@tonic-gate #define	IS_VALID_NODE(node)	IS_VALID_EXP(node)
65*0Sstevel@tonic-gate #endif	/* No_More_No_More */
66*0Sstevel@tonic-gate 
67*0Sstevel@tonic-gate 	/* Slots are L1 boards within an expander */
68*0Sstevel@tonic-gate #define	SLOT_COUNT		(2)
69*0Sstevel@tonic-gate #define	SLOT_MAX		(SLOT_COUNT - 1)
70*0Sstevel@tonic-gate #define	IS_VALID_SLOT(slot)	((slot) >= 0 && (slot) < SLOT_COUNT)
71*0Sstevel@tonic-gate 
72*0Sstevel@tonic-gate 
73*0Sstevel@tonic-gate #ifdef REFERENCE
74*0Sstevel@tonic-gate 	/* XXX: temporary definitions till Dan decides what he wants */
75*0Sstevel@tonic-gate #define	L1_COUNT		(SLOT_COUNT * EXP_COUNT)
76*0Sstevel@tonic-gate #define	L1_MAX			(L1_COUNT - 1)
77*0Sstevel@tonic-gate #define	IS_VALID_L1_BOARD(brd)	((brd) >= 0 && (brd) < L1_COUNT)
78*0Sstevel@tonic-gate 
79*0Sstevel@tonic-gate #define	S0_PROC_COUNT		(4)	/* max procs on slot 0 L1 board */
80*0Sstevel@tonic-gate #define	S1_PROC_COUNT		(2)	/* max procs on slot 1 L1 board */
81*0Sstevel@tonic-gate 
82*0Sstevel@tonic-gate #define	SPM_COUNT		(S0_PROC_COUNT + S1_PROC_COUNT)
83*0Sstevel@tonic-gate 
84*0Sstevel@tonic-gate #define	PROC_COUNT		((S0_PROC_COUNT * EXP_COUNT) + \
85*0Sstevel@tonic-gate 				    (S1_PROC_COUNT * EXP_COUNT))
86*0Sstevel@tonic-gate #define	PROC_MAX		(PROC_COUNT - 1)
87*0Sstevel@tonic-gate #define	IS_VALID_PROC(proc)	((proc) >= 0 && (proc) < PROC_COUNT)
88*0Sstevel@tonic-gate 
89*0Sstevel@tonic-gate #define	EXP2PROC(exp, spm)		((exp) * (spm))
90*0Sstevel@tonic-gate #define	EXPSLTBBC2SRAM(exp, slt, bbc)	((exp * 3) + (slt * 2) + (bbc))
91*0Sstevel@tonic-gate 
92*0Sstevel@tonic-gate #define	PROC2EXP(proc)	((proc) / 6)
93*0Sstevel@tonic-gate #define	PROC2SPM(proc)	((proc) % 6)
94*0Sstevel@tonic-gate #define	PROC2CPU(proc)	(PROC2SPM(proc) & 0x3)
95*0Sstevel@tonic-gate #define	PROC2SLT(proc)	(PROC2SPM(proc) >> 2)
96*0Sstevel@tonic-gate #define	PROC2BBC(proc)	(((PROC2CPU(proc)) & 0x2) >> 1)
97*0Sstevel@tonic-gate #define	PROC2PRT(proc)	((proc) & 0x1)
98*0Sstevel@tonic-gate #define	EXPSLT(proc)	PROC2EXP(proc), PROC2SLT(proc)
99*0Sstevel@tonic-gate #define	EXPSLTCPU(proc)	PROC2EXP(proc), PROC2SLT(proc), PROC2CPU(proc)
100*0Sstevel@tonic-gate #endif /* REFERENCE */
101*0Sstevel@tonic-gate 
102*0Sstevel@tonic-gate 
103*0Sstevel@tonic-gate 	/*
104*0Sstevel@tonic-gate 	 * PFP = Packed flat port.
105*0Sstevel@tonic-gate 	 * For cases where one might need to maintain information
106*0Sstevel@tonic-gate 	 * (pcd arrays), or write loops, over all 18 X 6 = 108 ports.
107*0Sstevel@tonic-gate 	 * It is expected that this flat view of the ports is not made
108*0Sstevel@tonic-gate 	 * visible to the user, they should see only the ordered triple
109*0Sstevel@tonic-gate 	 * <exp>.<slot>.<lport> or the 10-bit Safari PortId.
110*0Sstevel@tonic-gate 	 * PWE = Port Within Expander. [0-5]. Comes along with the
111*0Sstevel@tonic-gate 	 * PFP model, should also not be externally visible.
112*0Sstevel@tonic-gate 	 */
113*0Sstevel@tonic-gate #define	PORT_PER_EXP		6
114*0Sstevel@tonic-gate #define	PWE_COUNT		PORT_PER_EXP
115*0Sstevel@tonic-gate #define	PWE_MAX			(PWE_COUNT - 1)
116*0Sstevel@tonic-gate #define	IS_VALID_PWE(pwe)	((pwe) >= 0 && (pwe) < PWE_COUNT)
117*0Sstevel@tonic-gate 
118*0Sstevel@tonic-gate #define	PFP_COUNT		(EXP_COUNT * PORT_PER_EXP)
119*0Sstevel@tonic-gate #define	PFP_MAX			(PFP_COUNT - 1)
120*0Sstevel@tonic-gate #define	IS_VALID_PFP(pfp)	((pfp) >= 0 && (pfp) < PFP_COUNT)
121*0Sstevel@tonic-gate 
122*0Sstevel@tonic-gate #define	PFP2EXP(pfp)		((pfp) / 6)
123*0Sstevel@tonic-gate #define	PFP2PWE(pfp)		((pfp) % 6)
124*0Sstevel@tonic-gate #define	PWE2SLOT(pwe)		((pwe) >> 2)
125*0Sstevel@tonic-gate #define	PWE2LPORT(pwe)		((pwe) & 0x3)
126*0Sstevel@tonic-gate #define	PFP2SLOT(pfp)		(PWE2SLOT(PFP2PWE(pfp)))
127*0Sstevel@tonic-gate #define	PFP2LPORT(pfp)		(PWE2LPORT(PFP2PWE(pfp)))
128*0Sstevel@tonic-gate #define	PFP2BBC(pfp)		(((PFP2PWE(pfp)) >> 1) & 1)
129*0Sstevel@tonic-gate #define	PFP2BBCPORT(pfp)	((pfp) & 1)
130*0Sstevel@tonic-gate 
131*0Sstevel@tonic-gate #define	SL2PWE(slot, lport)	(((slot) << 2) + (lport))
132*0Sstevel@tonic-gate #define	EPWE2PFP(exp, pwe)	(((exp) * 6) + (pwe))
133*0Sstevel@tonic-gate #define	ESL2PFP(exp, slot, lport) (EPWE2PFP((exp), SL2PWE((slot), (lport))))
134*0Sstevel@tonic-gate 
135*0Sstevel@tonic-gate #define	S0_LPORT_COUNT		4	/* Ports on slot 0 L1 board */
136*0Sstevel@tonic-gate #define	S0_LPORT_MAX		(S0_LPORT_COUNT - 1)
137*0Sstevel@tonic-gate #define	IS_VALID_S0LPORT(lport)	((lport) >= 0 && (lport) < S0_LPORT_COUNT)
138*0Sstevel@tonic-gate #define	S1_LPORT_COUNT		2	/* Ports on slot 1 L1 board */
139*0Sstevel@tonic-gate #define	S1_LPORT_MAX		(S1_LPORT_COUNT - 1)
140*0Sstevel@tonic-gate #define	IS_VALID_S1LPORT(lport)	((lport) >= 0 && (lport) < S1_LPORT_COUNT)
141*0Sstevel@tonic-gate #define	LPORT_COUNT(slot)	((slot) ? S1_LPORT_COUNT : S0_LPORT_COUNT)
142*0Sstevel@tonic-gate #define	LPORT_MAX(slot)		(LPORT_COUNT(slot) - 1)
143*0Sstevel@tonic-gate #define	IS_VALID_LPORT(slot, lport) \
144*0Sstevel@tonic-gate 	((lport) >= 0 && (lport) < LPORT_COUNT(slot))
145*0Sstevel@tonic-gate #define	XC_IOBUS_PER_PORT	2
146*0Sstevel@tonic-gate #define	XC_IOCARD_PER_PORT	1
147*0Sstevel@tonic-gate #define	IS_VALID_IOBUS(bus)	((bus) >= 0 && (bus) < XC_IOBUS_PER_PORT)
148*0Sstevel@tonic-gate #define	IS_VALID_IOCARD(card)	((card) >= 0 && (card) < XC_IOCARD_PER_PORT)
149*0Sstevel@tonic-gate 
150*0Sstevel@tonic-gate 	/* BBC in these macros is local to a slot, either 0 or 1: */
151*0Sstevel@tonic-gate #define	S0_BBC_COUNT		2	/* BBCs on slot 0 L1 board */
152*0Sstevel@tonic-gate #define	S0_BBC_MAX		(S0_BBC_COUNT - 1)
153*0Sstevel@tonic-gate #define	IS_VALID_S0BBC(bbc)	((bbc) >= 0 && (bbc) < S0_BBC_COUNT)
154*0Sstevel@tonic-gate #define	S1_BBC_COUNT		1	/* BBCs on slot 1 L1 board */
155*0Sstevel@tonic-gate #define	S1_BBC_MAX		(S1_BBC_COUNT - 1)
156*0Sstevel@tonic-gate #define	IS_VALID_S1BBC(bbc)	((bbc) >= 0 && (bbc) < S1_BBC_COUNT)
157*0Sstevel@tonic-gate #define	BBC_COUNT(slot)	((slot) ? S1_BBC_COUNT : S0_BBC_COUNT)
158*0Sstevel@tonic-gate #define	BBC_MAX(slot)		(BBC_COUNT(slot) - 1)
159*0Sstevel@tonic-gate #define	IS_VALID_BBC(slot, bbc) \
160*0Sstevel@tonic-gate 	((bbc) >= 0 && (bbc) < BBC_COUNT(slot))
161*0Sstevel@tonic-gate 
162*0Sstevel@tonic-gate #define	LPORT2BBC(lport)	((lport) >> 1)
163*0Sstevel@tonic-gate #define	PWE2BBC(pwe)		(((pwe) >> 1) & 1)
164*0Sstevel@tonic-gate 
165*0Sstevel@tonic-gate 
166*0Sstevel@tonic-gate 	/* These are for use as printf() arguments for "%2d.%d", etc.: */
167*0Sstevel@tonic-gate #define	EXPSLOT(pfp)		PFP2EXP(pfp), PFP2SLOT(pfp)
168*0Sstevel@tonic-gate #define	EXPSLOTLPORT(pfp)	PFP2EXP(pfp), PFP2SLOT(pfp), PFP2LPORT(pfp)
169*0Sstevel@tonic-gate 
170*0Sstevel@tonic-gate 
171*0Sstevel@tonic-gate 	/* Build a 5-bit Safari Agent ID: */
172*0Sstevel@tonic-gate #define	SAFAGENT(slot, lport, is_ioport) \
173*0Sstevel@tonic-gate 	(((slot) ? ((is_ioport) ? 0x1C : 8) : 0) + (lport))
174*0Sstevel@tonic-gate 
175*0Sstevel@tonic-gate 	/* Build a 10-bit Safari ID: */
176*0Sstevel@tonic-gate #define	SAFARI_ID(exp, slot, lport, is_ioport) \
177*0Sstevel@tonic-gate 	(SAFAGENT(slot, lport, is_ioport) | ((exp) << 5))
178*0Sstevel@tonic-gate 
179*0Sstevel@tonic-gate 	/* Given a Safari Agent ID, extract the expander number */
180*0Sstevel@tonic-gate #define	GET_EXP(aid)		((aid & 0x3E0ull) >> 5)
181*0Sstevel@tonic-gate 
182*0Sstevel@tonic-gate 	/* Cacheable memory per (CPU) port */
183*0Sstevel@tonic-gate #define	DIMMS_PER_PORT		8
184*0Sstevel@tonic-gate #define	IS_VALID_DIMM(dimm)	\
185*0Sstevel@tonic-gate 	(((dimm) >= 0) && (dimm < (DIMMS_PER_PORT)))
186*0Sstevel@tonic-gate #define	PMBANKS_PER_PORT	2
187*0Sstevel@tonic-gate #define	LMBANKS_PER_PMBANK	2
188*0Sstevel@tonic-gate #define	IS_VALID_PMBANK(pmbank)	\
189*0Sstevel@tonic-gate 	(((pmbank) >= 0) && (pmbank < PMBANKS_PER_PORT))
190*0Sstevel@tonic-gate #define	IS_VALID_LMBANK(lmbank)	\
191*0Sstevel@tonic-gate 	(((lmbank) >= 0) && (lmbank < PMBANKS_PER_PORT))
192*0Sstevel@tonic-gate 
193*0Sstevel@tonic-gate 	/* Ecache per (CPU) port */
194*0Sstevel@tonic-gate #define	ECDIMMS_PER_PORT	2
195*0Sstevel@tonic-gate #define	IS_VALID_ECACHE(ecache)	\
196*0Sstevel@tonic-gate 	(((ecache) >= 0) && (ecache < ECDIMMS_PER_PORT))
197*0Sstevel@tonic-gate 
198*0Sstevel@tonic-gate 	/* SCM asics per CSB: */
199*0Sstevel@tonic-gate #define	SCM_COUNT		(2)
200*0Sstevel@tonic-gate #define	SCM_MAX			(SCM_COUNT - 1)
201*0Sstevel@tonic-gate #define	IS_VALID_SCM(scm)	((scm) >= 0 && (scm) < SCM_COUNT)
202*0Sstevel@tonic-gate 
203*0Sstevel@tonic-gate 	/* Master ports in an SCM: */
204*0Sstevel@tonic-gate #define	SCM_MPORT_COUNT			10
205*0Sstevel@tonic-gate 
206*0Sstevel@tonic-gate 	/* SDI asics per EXB: */
207*0Sstevel@tonic-gate #define	SDI_COUNT		(6)
208*0Sstevel@tonic-gate #define	SDI_MAX			(SDI_COUNT - 1)
209*0Sstevel@tonic-gate #define	IS_VALID_SDI(sdi)	((sdi) >= 0 && (sdi) < SDI_COUNT)
210*0Sstevel@tonic-gate 
211*0Sstevel@tonic-gate 	/* Half-centerplanes, CSBs, etc. */
212*0Sstevel@tonic-gate #define	CP_COUNT		(2)
213*0Sstevel@tonic-gate #define	CP_MAX			(CP_COUNT - 1)
214*0Sstevel@tonic-gate #define	IS_VALID_CP(cp)		((cp) >= 0 && (cp) < CP_COUNT)
215*0Sstevel@tonic-gate 
216*0Sstevel@tonic-gate 	/* DMX asics on the half-centerplane: */
217*0Sstevel@tonic-gate #define	DMX_COUNT		(6)
218*0Sstevel@tonic-gate #define	DMX_MAX			(DMX_COUNT - 1)
219*0Sstevel@tonic-gate #define	IS_VALID_DMX(dmx)	((dmx) >= 0 && (dmx) < DMX_COUNT)
220*0Sstevel@tonic-gate 
221*0Sstevel@tonic-gate 	/* AMX asics on the half-centerplane: */
222*0Sstevel@tonic-gate #define	AMX_COUNT		(2)
223*0Sstevel@tonic-gate #define	AMX_MAX			(AMX_COUNT - 1)
224*0Sstevel@tonic-gate #define	IS_VALID_AMX(amx)	((amx) >= 0 && (amx) < AMX_COUNT)
225*0Sstevel@tonic-gate 
226*0Sstevel@tonic-gate 	/* Number of CPUs per SBBC on the various boards: */
227*0Sstevel@tonic-gate #define	CPU_COUNT		(2)
228*0Sstevel@tonic-gate 
229*0Sstevel@tonic-gate 	/* Number of WCI per WIB: */
230*0Sstevel@tonic-gate #define	S0_WCI_COUNT		(2)
231*0Sstevel@tonic-gate #define	S0_WCI_MIN		(2)
232*0Sstevel@tonic-gate #define	S0_WCI_MAX		(S0_WCI_MIN + S0_WCI_COUNT - 1)
233*0Sstevel@tonic-gate #define	S0_IS_VALID_WCI(wci)	((wci) >= S0_WCI_MIN && (wci) <= S0_WCI_MAX)
234*0Sstevel@tonic-gate #define	S1_WCI_COUNT		(1)
235*0Sstevel@tonic-gate #define	S1_WCI_MIN		(1)
236*0Sstevel@tonic-gate #define	S1_WCI_MAX		(S1_WCI_MIN + S1_WCI_COUNT - 1)
237*0Sstevel@tonic-gate #define	WCI_COUNT(slot)		((slot) ? S1_WCI_COUNT : S0_WCI_COUNT)
238*0Sstevel@tonic-gate #define	WCI_MIN(slot)		((slot) ? S1_WCI_MIN : S0_WCI_MIN)
239*0Sstevel@tonic-gate #define	WCI_MAX(slot)		((slot) ? S1_WCI_MAX : S0_WCI_MAX)
240*0Sstevel@tonic-gate #define	S1_IS_VALID_WCI(wci)	((wci) >= S1_WCI_MIN && (wci) <= S1_WCI_MAX)
241*0Sstevel@tonic-gate #define	IS_VALID_WCI(slot, wci)	((slot) ? S1_IS_VALID_WCI((wci)) : \
242*0Sstevel@tonic-gate 				    S0_IS_VALID_WCI((wci)))
243*0Sstevel@tonic-gate 
244*0Sstevel@tonic-gate 	/* Safari reset number (within sbbc) given slot & lport */
245*0Sstevel@tonic-gate #define	WCI_RST_NUM(slot, lport) \
246*0Sstevel@tonic-gate 	((slot) ? 1 : ((lport) & 1 ? 1 : 0))
247*0Sstevel@tonic-gate 
248*0Sstevel@tonic-gate 	/* Number of non WCI safari devices per WIB */
249*0Sstevel@tonic-gate #define	S0_WIB_PROC_COUNT	(2)	/* max procs on slot 0 WIB */
250*0Sstevel@tonic-gate #define	S1_WIB_SCHIZO_COUNT	(1)	/* max schizos on slot 1 WIB */
251*0Sstevel@tonic-gate 
252*0Sstevel@tonic-gate 	/* Number of Schizo per PCI I/O board: */
253*0Sstevel@tonic-gate #define	SCHIZO_COUNT		(2)
254*0Sstevel@tonic-gate 
255*0Sstevel@tonic-gate 	/*
256*0Sstevel@tonic-gate 	 * CPU and Maxcat L1 boards have 4 DXs, I/O boards have 2.
257*0Sstevel@tonic-gate 	 * But it's useful to have this for array dimensions, etc.
258*0Sstevel@tonic-gate 	 */
259*0Sstevel@tonic-gate #define	DX_COUNT_MAX		(4)
260*0Sstevel@tonic-gate #define	IS_VALID_CPU_DX(dx)	((dx) >= 0 && (dx) < DX_COUNT_MAX)
261*0Sstevel@tonic-gate 
262*0Sstevel@tonic-gate 	/*
263*0Sstevel@tonic-gate 	 * DCDS asics for half of a CPU board. The DCDS is a data slice,
264*0Sstevel@tonic-gate 	 * 8 are required for a full Safari data path.
265*0Sstevel@tonic-gate 	 */
266*0Sstevel@tonic-gate #define	DCDS_COUNT		(8)
267*0Sstevel@tonic-gate #define	DCDS_MAX		(DCDS_COUNT - 1)
268*0Sstevel@tonic-gate #define	IS_VALID_DCDS(dcds)	((dcds) >= 0 && (dcds) < DCDS_COUNT)
269*0Sstevel@tonic-gate 
270*0Sstevel@tonic-gate 
271*0Sstevel@tonic-gate 	/*
272*0Sstevel@tonic-gate 	 * Address, Data, or Response Bus.
273*0Sstevel@tonic-gate 	 * For all three, 0 or 1 is a valid value.
274*0Sstevel@tonic-gate 	 */
275*0Sstevel@tonic-gate #define	BUS_COUNT		(CP_COUNT)
276*0Sstevel@tonic-gate #define	BUS_MAX			(BUS_COUNT - 1)
277*0Sstevel@tonic-gate #define	IS_VALID_BUS(bus)	((bus) >= 0 && (bus) < BUS_COUNT)
278*0Sstevel@tonic-gate 
279*0Sstevel@tonic-gate 	/*
280*0Sstevel@tonic-gate 	 * Address, Data, or Response Bus configuration.
281*0Sstevel@tonic-gate 	 * For all three, 1. 2. or 3 is a valid value.
282*0Sstevel@tonic-gate 	 */
283*0Sstevel@tonic-gate #define	BCONF_MIN		0x1
284*0Sstevel@tonic-gate #define	BCONF_MAX		0x3
285*0Sstevel@tonic-gate #define	BCONF_COUNT		3
286*0Sstevel@tonic-gate #define	IS_VALID_BCONF(bconf)	((bconf) >= BCONF_MIN && (bconf) <= BCONF_MAX)
287*0Sstevel@tonic-gate 
288*0Sstevel@tonic-gate 	/*
289*0Sstevel@tonic-gate 	 * This might seem a little obscure to be here, but it's needed
290*0Sstevel@tonic-gate 	 * for some array sizes and function prototypes:
291*0Sstevel@tonic-gate 	 */
292*0Sstevel@tonic-gate #define	AXQ_NASM_SIZE				256
293*0Sstevel@tonic-gate 
294*0Sstevel@tonic-gate 
295*0Sstevel@tonic-gate #ifdef __cplusplus
296*0Sstevel@tonic-gate }
297*0Sstevel@tonic-gate #endif
298*0Sstevel@tonic-gate 
299*0Sstevel@tonic-gate #endif	/* !_SCAT_CONST_H */
300