xref: /titanic_54/usr/src/uts/common/io/cpqary3/cpqary3_ciss.h (revision 80c94ecd7a524eb933a4bb221a9618b9dc490e76)
1*80c94ecdSKeith M Wesolowski /*
2*80c94ecdSKeith M Wesolowski  * This file and its contents are supplied under the terms of the
3*80c94ecdSKeith M Wesolowski  * Common Development and Distribution License ("CDDL"), version 1.0.
4*80c94ecdSKeith M Wesolowski  * You may only use this file in accordance with the terms of version
5*80c94ecdSKeith M Wesolowski  * 1.0 of the CDDL.
6*80c94ecdSKeith M Wesolowski  *
7*80c94ecdSKeith M Wesolowski  * A full copy of the text of the CDDL should have accompanied this
8*80c94ecdSKeith M Wesolowski  * source.  A copy of the CDDL is also available via the Internet at
9*80c94ecdSKeith M Wesolowski  * http://www.illumos.org/license/CDDL.
10*80c94ecdSKeith M Wesolowski  */
11*80c94ecdSKeith M Wesolowski 
12*80c94ecdSKeith M Wesolowski /*
13*80c94ecdSKeith M Wesolowski  * Copyright (C) 2013 Hewlett-Packard Development Company, L.P.
14*80c94ecdSKeith M Wesolowski  */
15*80c94ecdSKeith M Wesolowski 
16*80c94ecdSKeith M Wesolowski #ifndef	_CPQARY3_CISS_H
17*80c94ecdSKeith M Wesolowski #define	_CPQARY3_CISS_H
18*80c94ecdSKeith M Wesolowski 
19*80c94ecdSKeith M Wesolowski #ifdef	__cplusplus
20*80c94ecdSKeith M Wesolowski extern "C" {
21*80c94ecdSKeith M Wesolowski #endif
22*80c94ecdSKeith M Wesolowski 
23*80c94ecdSKeith M Wesolowski #define	CISS_VERSION		"1.00"
24*80c94ecdSKeith M Wesolowski 
25*80c94ecdSKeith M Wesolowski /* General Boundary Defintions */
26*80c94ecdSKeith M Wesolowski #define	CISS_INIT_TIME		90	/* Driver Defined Value */
27*80c94ecdSKeith M Wesolowski 					/* Duration to Wait for the */
28*80c94ecdSKeith M Wesolowski 					/* controller initialization */
29*80c94ecdSKeith M Wesolowski #define	CISS_SENSEINFOBYTES	256	/* Note that this value may vary */
30*80c94ecdSKeith M Wesolowski 					/* between host implementations */
31*80c94ecdSKeith M Wesolowski #define	CISS_MAXSGENTRIES	64
32*80c94ecdSKeith M Wesolowski #define	CISS_MAXREPLYQS		256
33*80c94ecdSKeith M Wesolowski 
34*80c94ecdSKeith M Wesolowski /* Command Status Value */
35*80c94ecdSKeith M Wesolowski #define	CISS_CMD_SUCCESS		0x00
36*80c94ecdSKeith M Wesolowski #define	CISS_CMD_TARGET_STATUS		0x01
37*80c94ecdSKeith M Wesolowski #define	CISS_CMD_DATA_UNDERRUN		0x02
38*80c94ecdSKeith M Wesolowski #define	CISS_CMD_DATA_OVERRUN		0x03
39*80c94ecdSKeith M Wesolowski #define	CISS_CMD_INVALID		0x04
40*80c94ecdSKeith M Wesolowski #define	CISS_CMD_PROTOCOL_ERR		0x05
41*80c94ecdSKeith M Wesolowski #define	CISS_CMD_HARDWARE_ERR		0x06
42*80c94ecdSKeith M Wesolowski #define	CISS_CMD_CONNECTION_LOST	0x07
43*80c94ecdSKeith M Wesolowski #define	CISS_CMD_ABORTED		0x08
44*80c94ecdSKeith M Wesolowski #define	CISS_CMD_ABORT_FAILED		0x09
45*80c94ecdSKeith M Wesolowski #define	CISS_CMD_UNSOLICITED_ABORT	0x0A
46*80c94ecdSKeith M Wesolowski #define	CISS_CMD_TIMEOUT		0x0B
47*80c94ecdSKeith M Wesolowski #define	CISS_CMD_UNABORTABLE		0x0C
48*80c94ecdSKeith M Wesolowski 
49*80c94ecdSKeith M Wesolowski /* Transfer Direction */
50*80c94ecdSKeith M Wesolowski #define	CISS_XFER_NONE		0x00
51*80c94ecdSKeith M Wesolowski #define	CISS_XFER_WRITE		0x01
52*80c94ecdSKeith M Wesolowski #define	CISS_XFER_READ		0x02
53*80c94ecdSKeith M Wesolowski #define	CISS_XFER_RSVD		0x03
54*80c94ecdSKeith M Wesolowski 
55*80c94ecdSKeith M Wesolowski #define	CISS_ATTR_UNTAGGED	0x00
56*80c94ecdSKeith M Wesolowski #define	CISS_ATTR_SIMPLE	0x04
57*80c94ecdSKeith M Wesolowski #define	CISS_ATTR_HEADOFQUEUE	0x05
58*80c94ecdSKeith M Wesolowski #define	CISS_ATTR_ORDERED	0x06
59*80c94ecdSKeith M Wesolowski 
60*80c94ecdSKeith M Wesolowski /* CDB Type */
61*80c94ecdSKeith M Wesolowski #define	CISS_TYPE_CMD		0x00
62*80c94ecdSKeith M Wesolowski #define	CISS_TYPE_MSG		0x01
63*80c94ecdSKeith M Wesolowski 
64*80c94ecdSKeith M Wesolowski /* Config Space Register Offsetsp */
65*80c94ecdSKeith M Wesolowski #define	CFG_VENDORID		0x00
66*80c94ecdSKeith M Wesolowski #define	CFG_DEVICEID		0x02
67*80c94ecdSKeith M Wesolowski #define	CFG_I2OBAR		0x10
68*80c94ecdSKeith M Wesolowski #define	CFG_MEM1BAR		0x14
69*80c94ecdSKeith M Wesolowski 
70*80c94ecdSKeith M Wesolowski /* I2O Space Register Offsets */
71*80c94ecdSKeith M Wesolowski #define	I2O_IBDB_SET		0x20
72*80c94ecdSKeith M Wesolowski #define	I2O_IBDB_CLEAR		0x70
73*80c94ecdSKeith M Wesolowski #define	I2O_INT_STATUS		0x30
74*80c94ecdSKeith M Wesolowski #define	I2O_INT_MASK		0x34
75*80c94ecdSKeith M Wesolowski #define	I2O_IBPOST_Q		0x40
76*80c94ecdSKeith M Wesolowski #define	I2O_OBPOST_Q		0x44
77*80c94ecdSKeith M Wesolowski #define	I2O_OBDB_STATUS		0x9C
78*80c94ecdSKeith M Wesolowski #define	I2O_OBDB_CLEAR		0xA0
79*80c94ecdSKeith M Wesolowski #define	I2O_CTLR_INIT		0xB0	/* not available in CISS specs */
80*80c94ecdSKeith M Wesolowski 
81*80c94ecdSKeith M Wesolowski /* Configuration Table */
82*80c94ecdSKeith M Wesolowski #define	CFGTBL_CHANGE_REQ	0x00000001l
83*80c94ecdSKeith M Wesolowski #define	CFGTBL_ACC_CMDS		0x00000001l
84*80c94ecdSKeith M Wesolowski 
85*80c94ecdSKeith M Wesolowski /* Transport Method */
86*80c94ecdSKeith M Wesolowski #define	CFGTBL_XPORT_SIMPLE		0x00000002l
87*80c94ecdSKeith M Wesolowski #define	CFGTBL_XPORT_PERFORMANT		0x00000004l
88*80c94ecdSKeith M Wesolowski #define	CFGTBL_XPORT_MEMQ		0x00000008l
89*80c94ecdSKeith M Wesolowski 
90*80c94ecdSKeith M Wesolowski #define	CPQARY3_SIMPLE		CFGTBL_XPORT_SIMPLE
91*80c94ecdSKeith M Wesolowski #define	CPQARY3_PERFORMANT	CFGTBL_XPORT_PERFORMANT
92*80c94ecdSKeith M Wesolowski 
93*80c94ecdSKeith M Wesolowski /* not being used currently */
94*80c94ecdSKeith M Wesolowski #define	CFGTBL_BusType_Ultra2	0x00000001l
95*80c94ecdSKeith M Wesolowski #define	CFGTBL_BusType_Ultra3	0x00000002l
96*80c94ecdSKeith M Wesolowski #define	CFGTBL_BusType_Fibre1G	0x00000100l
97*80c94ecdSKeith M Wesolowski #define	CFGTBL_BusType_Fibre2G	0x00000200l
98*80c94ecdSKeith M Wesolowski 
99*80c94ecdSKeith M Wesolowski /* for hard reset of the controller */
100*80c94ecdSKeith M Wesolowski #define	CISS_POWER_OFF		0x03	/* Self Defined */
101*80c94ecdSKeith M Wesolowski #define	CISS_POWER_ON		0x00	/* Self Defined */
102*80c94ecdSKeith M Wesolowski #define	CISS_POWER_REG_OFFSET	0xF4	/* Self Defined */
103*80c94ecdSKeith M Wesolowski 
104*80c94ecdSKeith M Wesolowski #define	CT_CFG_OFFSET		0xB4
105*80c94ecdSKeith M Wesolowski #define	CT_MEM_OFFSET		0xB8
106*80c94ecdSKeith M Wesolowski 
107*80c94ecdSKeith M Wesolowski /*
108*80c94ecdSKeith M Wesolowski  * STRUCTURES
109*80c94ecdSKeith M Wesolowski  * Command List Structure
110*80c94ecdSKeith M Wesolowski  */
111*80c94ecdSKeith M Wesolowski 
112*80c94ecdSKeith M Wesolowski #pragma pack(1)
113*80c94ecdSKeith M Wesolowski 
114*80c94ecdSKeith M Wesolowski typedef uint64_t QWORD;
115*80c94ecdSKeith M Wesolowski 
116*80c94ecdSKeith M Wesolowski /*
117*80c94ecdSKeith M Wesolowski  * Structure for Tag field in the controller command structure
118*80c94ecdSKeith M Wesolowski  * Bit 0	: Unused
119*80c94ecdSKeith M Wesolowski  * Bit 1 	: If set, signifies an error in processing of the command
120*80c94ecdSKeith M Wesolowski  * Bits 2 & 3 	: Used by this driver to signify a host of situations
121*80c94ecdSKeith M Wesolowski  * Bits 4-31 	: Used by driver to fill in tag and then used by controller
122*80c94ecdSKeith M Wesolowski  * Bits 32-63 	: Reserved
123*80c94ecdSKeith M Wesolowski  */
124*80c94ecdSKeith M Wesolowski #define	CISS_CMD_ERROR		0x2
125*80c94ecdSKeith M Wesolowski typedef struct cpqary3_tag {
126*80c94ecdSKeith M Wesolowski 	uint32_t	reserved:1;
127*80c94ecdSKeith M Wesolowski 	uint32_t	drvinfo_n_err:3;
128*80c94ecdSKeith M Wesolowski 	uint32_t	tag_value:28;
129*80c94ecdSKeith M Wesolowski 	uint32_t	unused;
130*80c94ecdSKeith M Wesolowski } cpqary3_tag_t;
131*80c94ecdSKeith M Wesolowski 
132*80c94ecdSKeith M Wesolowski typedef union _SCSI3Addr_t {
133*80c94ecdSKeith M Wesolowski 	struct {
134*80c94ecdSKeith M Wesolowski 		uint8_t Bus:6;
135*80c94ecdSKeith M Wesolowski 		uint8_t Mode:2;
136*80c94ecdSKeith M Wesolowski 		uint8_t Dev;
137*80c94ecdSKeith M Wesolowski 	} PeripDev;
138*80c94ecdSKeith M Wesolowski 	struct {
139*80c94ecdSKeith M Wesolowski 		uint8_t DevMSB:6;
140*80c94ecdSKeith M Wesolowski 		uint8_t Mode:2;
141*80c94ecdSKeith M Wesolowski 		uint8_t DevLSB;
142*80c94ecdSKeith M Wesolowski 	} LogDev;
143*80c94ecdSKeith M Wesolowski 	struct {
144*80c94ecdSKeith M Wesolowski 		uint8_t Targ:6;
145*80c94ecdSKeith M Wesolowski 		uint8_t Mode:2;
146*80c94ecdSKeith M Wesolowski 		uint8_t Dev:5;
147*80c94ecdSKeith M Wesolowski 		uint8_t Bus:3;
148*80c94ecdSKeith M Wesolowski 	} LogUnit;
149*80c94ecdSKeith M Wesolowski } SCSI3Addr_t;
150*80c94ecdSKeith M Wesolowski 
151*80c94ecdSKeith M Wesolowski typedef struct _PhysDevAddr_t {
152*80c94ecdSKeith M Wesolowski 	uint32_t    TargetId:24;
153*80c94ecdSKeith M Wesolowski 	uint32_t    Bus:6;
154*80c94ecdSKeith M Wesolowski 	uint32_t    Mode:2;
155*80c94ecdSKeith M Wesolowski 	SCSI3Addr_t Target[2];
156*80c94ecdSKeith M Wesolowski } PhysDevAddr_t;
157*80c94ecdSKeith M Wesolowski 
158*80c94ecdSKeith M Wesolowski typedef struct _LogDevAddr_t {
159*80c94ecdSKeith M Wesolowski 	uint32_t	VolId:30;
160*80c94ecdSKeith M Wesolowski 	uint32_t	Mode:2;
161*80c94ecdSKeith M Wesolowski 	uint8_t		reserved[4];
162*80c94ecdSKeith M Wesolowski } LogDevAddr_t;
163*80c94ecdSKeith M Wesolowski 
164*80c94ecdSKeith M Wesolowski typedef union _LUNAddr_t {
165*80c94ecdSKeith M Wesolowski 	uint8_t		LunAddrBytes[8];
166*80c94ecdSKeith M Wesolowski 	SCSI3Addr_t	SCSI3Lun[4];
167*80c94ecdSKeith M Wesolowski 	PhysDevAddr_t	PhysDev;
168*80c94ecdSKeith M Wesolowski 	LogDevAddr_t	LogDev;
169*80c94ecdSKeith M Wesolowski } LUNAddr_t;
170*80c94ecdSKeith M Wesolowski 
171*80c94ecdSKeith M Wesolowski typedef struct _CommandListHeader_t {
172*80c94ecdSKeith M Wesolowski 	uint8_t		ReplyQueue;
173*80c94ecdSKeith M Wesolowski 	uint8_t		SGList;
174*80c94ecdSKeith M Wesolowski 	uint16_t	SGTotal;
175*80c94ecdSKeith M Wesolowski 	cpqary3_tag_t	Tag;
176*80c94ecdSKeith M Wesolowski 	LUNAddr_t	LUN;			/* 20 */
177*80c94ecdSKeith M Wesolowski } CommandListHeader_t;
178*80c94ecdSKeith M Wesolowski 
179*80c94ecdSKeith M Wesolowski typedef struct _RequestBlock_t {
180*80c94ecdSKeith M Wesolowski 	uint8_t	CDBLen;
181*80c94ecdSKeith M Wesolowski 	struct {
182*80c94ecdSKeith M Wesolowski 		uint8_t	Type:3;
183*80c94ecdSKeith M Wesolowski 		uint8_t	Attribute:3;
184*80c94ecdSKeith M Wesolowski 		uint8_t	Direction:2;
185*80c94ecdSKeith M Wesolowski 	} Type;
186*80c94ecdSKeith M Wesolowski 	uint16_t	Timeout;
187*80c94ecdSKeith M Wesolowski 	uint8_t		CDB[16];		/* 20 */
188*80c94ecdSKeith M Wesolowski } RequestBlock_t;
189*80c94ecdSKeith M Wesolowski 
190*80c94ecdSKeith M Wesolowski typedef struct _ErrDescriptor_t {
191*80c94ecdSKeith M Wesolowski 	QWORD		Addr;
192*80c94ecdSKeith M Wesolowski 	uint32_t	Len;			/* 12 */
193*80c94ecdSKeith M Wesolowski } ErrDescriptor_t;
194*80c94ecdSKeith M Wesolowski 
195*80c94ecdSKeith M Wesolowski typedef struct _SGDescriptor_t {
196*80c94ecdSKeith M Wesolowski 	QWORD		Addr;
197*80c94ecdSKeith M Wesolowski 	uint32_t	Len;
198*80c94ecdSKeith M Wesolowski 	uint32_t	Ext;			/* 16 */
199*80c94ecdSKeith M Wesolowski } SGDescriptor_t;
200*80c94ecdSKeith M Wesolowski 
201*80c94ecdSKeith M Wesolowski typedef struct _CommandList_t {
202*80c94ecdSKeith M Wesolowski 	CommandListHeader_t Header;		/* 20 */
203*80c94ecdSKeith M Wesolowski 	RequestBlock_t Request;			/* 20, 40 */
204*80c94ecdSKeith M Wesolowski 	ErrDescriptor_t ErrDesc;		/* 12, 52 */
205*80c94ecdSKeith M Wesolowski 	SGDescriptor_t SG[CISS_MAXSGENTRIES];	/* 16*SG_MAXENTRIES=512, 564 */
206*80c94ecdSKeith M Wesolowski } CommandList_t;
207*80c94ecdSKeith M Wesolowski 
208*80c94ecdSKeith M Wesolowski typedef union _MoreErrInfo_t {
209*80c94ecdSKeith M Wesolowski 	struct {
210*80c94ecdSKeith M Wesolowski 		uint8_t		Reserved[3];
211*80c94ecdSKeith M Wesolowski 		uint8_t		Type;
212*80c94ecdSKeith M Wesolowski 		uint32_t	ErrorInfo;
213*80c94ecdSKeith M Wesolowski 	} Common_Info;
214*80c94ecdSKeith M Wesolowski 	struct {
215*80c94ecdSKeith M Wesolowski 		uint8_t		Reserved[2];
216*80c94ecdSKeith M Wesolowski 		uint8_t		offense_size;
217*80c94ecdSKeith M Wesolowski 		uint8_t		offense_num;
218*80c94ecdSKeith M Wesolowski 		uint32_t	offense_value;
219*80c94ecdSKeith M Wesolowski 	} Invalid_Cmd;
220*80c94ecdSKeith M Wesolowski } MoreErrInfo_t;
221*80c94ecdSKeith M Wesolowski 
222*80c94ecdSKeith M Wesolowski typedef struct _ErrorInfo_t {
223*80c94ecdSKeith M Wesolowski 	uint8_t		ScsiStatus;
224*80c94ecdSKeith M Wesolowski 	uint8_t		SenseLen;
225*80c94ecdSKeith M Wesolowski 	uint16_t	CommandStatus;
226*80c94ecdSKeith M Wesolowski 	uint32_t	ResidualCnt;
227*80c94ecdSKeith M Wesolowski 	MoreErrInfo_t	MoreErrInfo;
228*80c94ecdSKeith M Wesolowski 	uint8_t		SenseInfo[CISS_SENSEINFOBYTES]; /* 256 + 24 = 280 */
229*80c94ecdSKeith M Wesolowski } ErrorInfo_t;
230*80c94ecdSKeith M Wesolowski 
231*80c94ecdSKeith M Wesolowski /* Configuration Table Structure */
232*80c94ecdSKeith M Wesolowski typedef struct _HostWrite_t {
233*80c94ecdSKeith M Wesolowski 	uint32_t	TransportRequest;
234*80c94ecdSKeith M Wesolowski 	uint32_t	Upper32Addr;
235*80c94ecdSKeith M Wesolowski 	uint32_t	CoalIntDelay;
236*80c94ecdSKeith M Wesolowski 	uint32_t	CoalIntCount;
237*80c94ecdSKeith M Wesolowski } HostWrite_t;
238*80c94ecdSKeith M Wesolowski 
239*80c94ecdSKeith M Wesolowski typedef struct _CfgTable_t {
240*80c94ecdSKeith M Wesolowski 	uint8_t		Signature[4];
241*80c94ecdSKeith M Wesolowski 	uint32_t	SpecValence;
242*80c94ecdSKeith M Wesolowski 	uint32_t	TransportSupport;
243*80c94ecdSKeith M Wesolowski 	uint32_t	TransportActive;
244*80c94ecdSKeith M Wesolowski 	HostWrite_t	HostWrite;
245*80c94ecdSKeith M Wesolowski 	uint32_t	CmdsOutMax;
246*80c94ecdSKeith M Wesolowski 	uint32_t	BusTypes;
247*80c94ecdSKeith M Wesolowski 	uint32_t	TransportMethodOffset;
248*80c94ecdSKeith M Wesolowski 	uint8_t		ServerName[16];
249*80c94ecdSKeith M Wesolowski 	uint32_t	HeartBeat;
250*80c94ecdSKeith M Wesolowski 	/* PERF */
251*80c94ecdSKeith M Wesolowski 	uint32_t	HostDrvrSupport;	/* 0x40 offset from cfg table */
252*80c94ecdSKeith M Wesolowski 	uint32_t	MaxSGElements;		/* 0x44 offset from cfg table */
253*80c94ecdSKeith M Wesolowski 	uint32_t	MaxLunSupport;		/* 0x48 offset from cfg table */
254*80c94ecdSKeith M Wesolowski 	uint32_t	MaxPhyDevSupport;	/* 0x4C offset from cfg table */
255*80c94ecdSKeith M Wesolowski 	uint32_t	MaxPhyDrvPerLun;	/* 0x50 offset from cfg table */
256*80c94ecdSKeith M Wesolowski 	uint32_t	MaxPerfModeCmdsOutMax;	/* 0x54 offset from cfg table */
257*80c94ecdSKeith M Wesolowski 	uint32_t	MaxBlockFetchCount;	/* 0x58 offset from cfg table */
258*80c94ecdSKeith M Wesolowski 	/* PERF */
259*80c94ecdSKeith M Wesolowski } CfgTable_t;
260*80c94ecdSKeith M Wesolowski 
261*80c94ecdSKeith M Wesolowski typedef struct _CfgTrans_Perf_t {
262*80c94ecdSKeith M Wesolowski 	uint32_t	BlockFetchCnt[8];
263*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQSize;
264*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQCount;
265*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQCntrAddrLow32;
266*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQCntrAddrHigh32;
267*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQAddr0Low32;
268*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQAddr0High32;
269*80c94ecdSKeith M Wesolowski } CfgTrans_Perf_t;
270*80c94ecdSKeith M Wesolowski 
271*80c94ecdSKeith M Wesolowski typedef struct _CfgTrans_MemQ_t {
272*80c94ecdSKeith M Wesolowski 	uint32_t	BlockFetchCnt[8];
273*80c94ecdSKeith M Wesolowski 	uint32_t	CmdQSize;
274*80c94ecdSKeith M Wesolowski 	uint32_t	CmdQOffset;
275*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQSize;
276*80c94ecdSKeith M Wesolowski 	uint32_t	ReplyQCount;
277*80c94ecdSKeith M Wesolowski 	QWORD		ReplyQCntrAddr;
278*80c94ecdSKeith M Wesolowski 	QWORD		ReplyQAddr[CISS_MAXREPLYQS];
279*80c94ecdSKeith M Wesolowski } CfgTrans_MemQ_t;
280*80c94ecdSKeith M Wesolowski 
281*80c94ecdSKeith M Wesolowski typedef union _CfgTrans_t {
282*80c94ecdSKeith M Wesolowski 	CfgTrans_Perf_t	*Perf;
283*80c94ecdSKeith M Wesolowski 	CfgTrans_MemQ_t	*MemQ;
284*80c94ecdSKeith M Wesolowski } CfgTrans_t;
285*80c94ecdSKeith M Wesolowski 
286*80c94ecdSKeith M Wesolowski #define	CPQARY3_REPLYQ_INIT_CYCLIC_IND	0x1
287*80c94ecdSKeith M Wesolowski typedef struct cpqary3_drvr_replyq {
288*80c94ecdSKeith M Wesolowski 	uchar_t		cyclic_indicator;
289*80c94ecdSKeith M Wesolowski 	uchar_t 	simple_cyclic_indicator;
290*80c94ecdSKeith M Wesolowski 	caddr_t 	replyq_start_addr;
291*80c94ecdSKeith M Wesolowski 	uint32_t	replyq_start_paddr;
292*80c94ecdSKeith M Wesolowski 	uint32_t	*replyq_headptr;
293*80c94ecdSKeith M Wesolowski 	uint32_t	*replyq_simple_ptr;
294*80c94ecdSKeith M Wesolowski 	uint32_t	index;
295*80c94ecdSKeith M Wesolowski 	uint32_t	simple_index;
296*80c94ecdSKeith M Wesolowski 	uint32_t	max_index;
297*80c94ecdSKeith M Wesolowski } cpqary3_drvr_replyq_t;
298*80c94ecdSKeith M Wesolowski 
299*80c94ecdSKeith M Wesolowski #pragma pack()
300*80c94ecdSKeith M Wesolowski 
301*80c94ecdSKeith M Wesolowski #ifdef	__cplusplus
302*80c94ecdSKeith M Wesolowski }
303*80c94ecdSKeith M Wesolowski #endif
304*80c94ecdSKeith M Wesolowski 
305*80c94ecdSKeith M Wesolowski #endif /* _CPQARY3_CISS_H */
306