xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/cciss_ioctl.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef CCISS_IOCTLH
2*53ee8cc1Swenshuai.xi #define CCISS_IOCTLH
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include <linux/types.h>
5*53ee8cc1Swenshuai.xi #include <linux/ioctl.h>
6*53ee8cc1Swenshuai.xi 
7*53ee8cc1Swenshuai.xi #define CCISS_IOC_MAGIC 'B'
8*53ee8cc1Swenshuai.xi 
9*53ee8cc1Swenshuai.xi 
10*53ee8cc1Swenshuai.xi typedef struct _cciss_pci_info_struct
11*53ee8cc1Swenshuai.xi {
12*53ee8cc1Swenshuai.xi 	unsigned char 	bus;
13*53ee8cc1Swenshuai.xi 	unsigned char 	dev_fn;
14*53ee8cc1Swenshuai.xi 	unsigned short	domain;
15*53ee8cc1Swenshuai.xi 	__u32 		board_id;
16*53ee8cc1Swenshuai.xi } cciss_pci_info_struct;
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi typedef struct _cciss_coalint_struct
19*53ee8cc1Swenshuai.xi {
20*53ee8cc1Swenshuai.xi 	__u32  delay;
21*53ee8cc1Swenshuai.xi 	__u32  count;
22*53ee8cc1Swenshuai.xi } cciss_coalint_struct;
23*53ee8cc1Swenshuai.xi 
24*53ee8cc1Swenshuai.xi typedef char NodeName_type[16];
25*53ee8cc1Swenshuai.xi 
26*53ee8cc1Swenshuai.xi typedef __u32 Heartbeat_type;
27*53ee8cc1Swenshuai.xi 
28*53ee8cc1Swenshuai.xi #define CISS_PARSCSIU2 	0x0001
29*53ee8cc1Swenshuai.xi #define CISS_PARCSCIU3 	0x0002
30*53ee8cc1Swenshuai.xi #define CISS_FIBRE1G	0x0100
31*53ee8cc1Swenshuai.xi #define CISS_FIBRE2G	0x0200
32*53ee8cc1Swenshuai.xi typedef __u32 BusTypes_type;
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi typedef char FirmwareVer_type[4];
35*53ee8cc1Swenshuai.xi typedef __u32 DriverVer_type;
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi #define MAX_KMALLOC_SIZE 128000
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi #ifndef CCISS_CMD_H
40*53ee8cc1Swenshuai.xi // This defines are duplicated in cciss_cmd.h in the driver directory
41*53ee8cc1Swenshuai.xi 
42*53ee8cc1Swenshuai.xi //general boundary defintions
43*53ee8cc1Swenshuai.xi #define SENSEINFOBYTES          32//note that this value may vary between host implementations
44*53ee8cc1Swenshuai.xi 
45*53ee8cc1Swenshuai.xi //Command Status value
46*53ee8cc1Swenshuai.xi #define CMD_SUCCESS             0x0000
47*53ee8cc1Swenshuai.xi #define CMD_TARGET_STATUS       0x0001
48*53ee8cc1Swenshuai.xi #define CMD_DATA_UNDERRUN       0x0002
49*53ee8cc1Swenshuai.xi #define CMD_DATA_OVERRUN        0x0003
50*53ee8cc1Swenshuai.xi #define CMD_INVALID             0x0004
51*53ee8cc1Swenshuai.xi #define CMD_PROTOCOL_ERR        0x0005
52*53ee8cc1Swenshuai.xi #define CMD_HARDWARE_ERR        0x0006
53*53ee8cc1Swenshuai.xi #define CMD_CONNECTION_LOST     0x0007
54*53ee8cc1Swenshuai.xi #define CMD_ABORTED             0x0008
55*53ee8cc1Swenshuai.xi #define CMD_ABORT_FAILED        0x0009
56*53ee8cc1Swenshuai.xi #define CMD_UNSOLICITED_ABORT   0x000A
57*53ee8cc1Swenshuai.xi #define CMD_TIMEOUT             0x000B
58*53ee8cc1Swenshuai.xi #define CMD_UNABORTABLE		0x000C
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi //transfer direction
61*53ee8cc1Swenshuai.xi #define XFER_NONE               0x00
62*53ee8cc1Swenshuai.xi #define XFER_WRITE              0x01
63*53ee8cc1Swenshuai.xi #define XFER_READ               0x02
64*53ee8cc1Swenshuai.xi #define XFER_RSVD               0x03
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi //task attribute
67*53ee8cc1Swenshuai.xi #define ATTR_UNTAGGED           0x00
68*53ee8cc1Swenshuai.xi #define ATTR_SIMPLE             0x04
69*53ee8cc1Swenshuai.xi #define ATTR_HEADOFQUEUE        0x05
70*53ee8cc1Swenshuai.xi #define ATTR_ORDERED            0x06
71*53ee8cc1Swenshuai.xi #define ATTR_ACA                0x07
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi //cdb type
74*53ee8cc1Swenshuai.xi #define TYPE_CMD				0x00
75*53ee8cc1Swenshuai.xi #define TYPE_MSG				0x01
76*53ee8cc1Swenshuai.xi 
77*53ee8cc1Swenshuai.xi // Type defs used in the following structs
78*53ee8cc1Swenshuai.xi #define BYTE __u8
79*53ee8cc1Swenshuai.xi #define WORD __u16
80*53ee8cc1Swenshuai.xi #define HWORD __u16
81*53ee8cc1Swenshuai.xi #define DWORD __u32
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi #define CISS_MAX_LUN	1024
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi #define LEVEL2LUN   1   // index into Target(x) structure, due to byte swapping
86*53ee8cc1Swenshuai.xi #define LEVEL3LUN   0
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi #pragma pack(1)
89*53ee8cc1Swenshuai.xi 
90*53ee8cc1Swenshuai.xi //Command List Structure
91*53ee8cc1Swenshuai.xi typedef union _SCSI3Addr_struct {
92*53ee8cc1Swenshuai.xi    struct {
93*53ee8cc1Swenshuai.xi     BYTE Dev;
94*53ee8cc1Swenshuai.xi     BYTE Bus:6;
95*53ee8cc1Swenshuai.xi     BYTE Mode:2;        // b00
96*53ee8cc1Swenshuai.xi   } PeripDev;
97*53ee8cc1Swenshuai.xi    struct {
98*53ee8cc1Swenshuai.xi     BYTE DevLSB;
99*53ee8cc1Swenshuai.xi     BYTE DevMSB:6;
100*53ee8cc1Swenshuai.xi     BYTE Mode:2;        // b01
101*53ee8cc1Swenshuai.xi   } LogDev;
102*53ee8cc1Swenshuai.xi    struct {
103*53ee8cc1Swenshuai.xi     BYTE Dev:5;
104*53ee8cc1Swenshuai.xi     BYTE Bus:3;
105*53ee8cc1Swenshuai.xi     BYTE Targ:6;
106*53ee8cc1Swenshuai.xi     BYTE Mode:2;        // b10
107*53ee8cc1Swenshuai.xi   } LogUnit;
108*53ee8cc1Swenshuai.xi } SCSI3Addr_struct;
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi typedef struct _PhysDevAddr_struct {
111*53ee8cc1Swenshuai.xi   DWORD             TargetId:24;
112*53ee8cc1Swenshuai.xi   DWORD             Bus:6;
113*53ee8cc1Swenshuai.xi   DWORD             Mode:2;
114*53ee8cc1Swenshuai.xi   SCSI3Addr_struct  Target[2]; //2 level target device addr
115*53ee8cc1Swenshuai.xi } PhysDevAddr_struct;
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi typedef struct _LogDevAddr_struct {
118*53ee8cc1Swenshuai.xi   DWORD            VolId:30;
119*53ee8cc1Swenshuai.xi   DWORD            Mode:2;
120*53ee8cc1Swenshuai.xi   BYTE             reserved[4];
121*53ee8cc1Swenshuai.xi } LogDevAddr_struct;
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi typedef union _LUNAddr_struct {
124*53ee8cc1Swenshuai.xi   BYTE               LunAddrBytes[8];
125*53ee8cc1Swenshuai.xi   SCSI3Addr_struct   SCSI3Lun[4];
126*53ee8cc1Swenshuai.xi   PhysDevAddr_struct PhysDev;
127*53ee8cc1Swenshuai.xi   LogDevAddr_struct  LogDev;
128*53ee8cc1Swenshuai.xi } LUNAddr_struct;
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi typedef struct _RequestBlock_struct {
131*53ee8cc1Swenshuai.xi   BYTE   CDBLen;
132*53ee8cc1Swenshuai.xi   struct {
133*53ee8cc1Swenshuai.xi     BYTE Type:3;
134*53ee8cc1Swenshuai.xi     BYTE Attribute:3;
135*53ee8cc1Swenshuai.xi     BYTE Direction:2;
136*53ee8cc1Swenshuai.xi   } Type;
137*53ee8cc1Swenshuai.xi   HWORD  Timeout;
138*53ee8cc1Swenshuai.xi   BYTE   CDB[16];
139*53ee8cc1Swenshuai.xi } RequestBlock_struct;
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi typedef union _MoreErrInfo_struct{
142*53ee8cc1Swenshuai.xi   struct {
143*53ee8cc1Swenshuai.xi     BYTE  Reserved[3];
144*53ee8cc1Swenshuai.xi     BYTE  Type;
145*53ee8cc1Swenshuai.xi     DWORD ErrorInfo;
146*53ee8cc1Swenshuai.xi   }Common_Info;
147*53ee8cc1Swenshuai.xi   struct{
148*53ee8cc1Swenshuai.xi     BYTE  Reserved[2];
149*53ee8cc1Swenshuai.xi     BYTE  offense_size;//size of offending entry
150*53ee8cc1Swenshuai.xi     BYTE  offense_num; //byte # of offense 0-base
151*53ee8cc1Swenshuai.xi     DWORD offense_value;
152*53ee8cc1Swenshuai.xi   }Invalid_Cmd;
153*53ee8cc1Swenshuai.xi }MoreErrInfo_struct;
154*53ee8cc1Swenshuai.xi typedef struct _ErrorInfo_struct {
155*53ee8cc1Swenshuai.xi   BYTE               ScsiStatus;
156*53ee8cc1Swenshuai.xi   BYTE               SenseLen;
157*53ee8cc1Swenshuai.xi   HWORD              CommandStatus;
158*53ee8cc1Swenshuai.xi   DWORD              ResidualCnt;
159*53ee8cc1Swenshuai.xi   MoreErrInfo_struct MoreErrInfo;
160*53ee8cc1Swenshuai.xi   BYTE               SenseInfo[SENSEINFOBYTES];
161*53ee8cc1Swenshuai.xi } ErrorInfo_struct;
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi #pragma pack()
164*53ee8cc1Swenshuai.xi #endif /* CCISS_CMD_H */
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi typedef struct _IOCTL_Command_struct {
167*53ee8cc1Swenshuai.xi   LUNAddr_struct	   LUN_info;
168*53ee8cc1Swenshuai.xi   RequestBlock_struct      Request;
169*53ee8cc1Swenshuai.xi   ErrorInfo_struct  	   error_info;
170*53ee8cc1Swenshuai.xi   WORD			   buf_size;  /* size in bytes of the buf */
171*53ee8cc1Swenshuai.xi   BYTE			   *buf;
172*53ee8cc1Swenshuai.xi } IOCTL_Command_struct;
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi typedef struct _BIG_IOCTL_Command_struct {
175*53ee8cc1Swenshuai.xi   LUNAddr_struct	   LUN_info;
176*53ee8cc1Swenshuai.xi   RequestBlock_struct      Request;
177*53ee8cc1Swenshuai.xi   ErrorInfo_struct  	   error_info;
178*53ee8cc1Swenshuai.xi   DWORD			   malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */
179*53ee8cc1Swenshuai.xi   DWORD			   buf_size;    /* size in bytes of the buf */
180*53ee8cc1Swenshuai.xi   				        /* < malloc_size * MAXSGENTRIES */
181*53ee8cc1Swenshuai.xi   BYTE			   *buf;
182*53ee8cc1Swenshuai.xi } BIG_IOCTL_Command_struct;
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi typedef struct _LogvolInfo_struct{
185*53ee8cc1Swenshuai.xi 	__u32	LunID;
186*53ee8cc1Swenshuai.xi 	int	num_opens;  /* number of opens on the logical volume */
187*53ee8cc1Swenshuai.xi 	int	num_parts;  /* number of partitions configured on logvol */
188*53ee8cc1Swenshuai.xi } LogvolInfo_struct;
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi #define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct)
191*53ee8cc1Swenshuai.xi 
192*53ee8cc1Swenshuai.xi #define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct)
193*53ee8cc1Swenshuai.xi #define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct)
194*53ee8cc1Swenshuai.xi 
195*53ee8cc1Swenshuai.xi #define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type)
196*53ee8cc1Swenshuai.xi #define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type)
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi #define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type)
199*53ee8cc1Swenshuai.xi #define CCISS_GETBUSTYPES  _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type)
200*53ee8cc1Swenshuai.xi #define CCISS_GETFIRMVER   _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type)
201*53ee8cc1Swenshuai.xi #define CCISS_GETDRIVVER   _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type)
202*53ee8cc1Swenshuai.xi #define CCISS_REVALIDVOLS  _IO(CCISS_IOC_MAGIC, 10)
203*53ee8cc1Swenshuai.xi #define CCISS_PASSTHRU	   _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
204*53ee8cc1Swenshuai.xi #define CCISS_DEREGDISK	   _IO(CCISS_IOC_MAGIC, 12)
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi /* no longer used... use REGNEWD instead */
207*53ee8cc1Swenshuai.xi #define CCISS_REGNEWDISK  _IOW(CCISS_IOC_MAGIC, 13, int)
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi #define CCISS_REGNEWD	   _IO(CCISS_IOC_MAGIC, 14)
210*53ee8cc1Swenshuai.xi #define CCISS_RESCANDISK   _IO(CCISS_IOC_MAGIC, 16)
211*53ee8cc1Swenshuai.xi #define CCISS_GETLUNINFO   _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
212*53ee8cc1Swenshuai.xi #define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct)
213*53ee8cc1Swenshuai.xi 
214*53ee8cc1Swenshuai.xi #endif
215