xref: /aosp_15_r20/external/musl/include/scsi/sg.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef _SCSI_SG_H
2*c9945492SAndroid Build Coastguard Worker #define _SCSI_SG_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker #define SG_DXFER_NONE -1
5*c9945492SAndroid Build Coastguard Worker #define SG_DXFER_TO_DEV -2
6*c9945492SAndroid Build Coastguard Worker #define SG_DXFER_FROM_DEV -3
7*c9945492SAndroid Build Coastguard Worker #define SG_DXFER_TO_FROM_DEV -4
8*c9945492SAndroid Build Coastguard Worker #define SG_FLAG_DIRECT_IO 1
9*c9945492SAndroid Build Coastguard Worker #define SG_FLAG_LUN_INHIBIT 2
10*c9945492SAndroid Build Coastguard Worker #define SG_FLAG_NO_DXFER 0x10000
11*c9945492SAndroid Build Coastguard Worker #define SG_INFO_OK_MASK 0x1
12*c9945492SAndroid Build Coastguard Worker #define SG_INFO_OK 0x0
13*c9945492SAndroid Build Coastguard Worker #define SG_INFO_CHECK 0x1
14*c9945492SAndroid Build Coastguard Worker #define SG_INFO_DIRECT_IO_MASK 0x6
15*c9945492SAndroid Build Coastguard Worker #define SG_INFO_INDIRECT_IO 0x0
16*c9945492SAndroid Build Coastguard Worker #define SG_INFO_DIRECT_IO 0x2
17*c9945492SAndroid Build Coastguard Worker #define SG_INFO_MIXED_IO 0x4
18*c9945492SAndroid Build Coastguard Worker #define SG_EMULATED_HOST 0x2203
19*c9945492SAndroid Build Coastguard Worker #define SG_SET_TRANSFORM 0x2204
20*c9945492SAndroid Build Coastguard Worker #define SG_GET_TRANSFORM 0x2205
21*c9945492SAndroid Build Coastguard Worker #define SG_SET_RESERVED_SIZE 0x2275
22*c9945492SAndroid Build Coastguard Worker #define SG_GET_RESERVED_SIZE 0x2272
23*c9945492SAndroid Build Coastguard Worker #define SG_GET_SCSI_ID 0x2276
24*c9945492SAndroid Build Coastguard Worker #define SG_SET_FORCE_LOW_DMA 0x2279
25*c9945492SAndroid Build Coastguard Worker #define SG_GET_LOW_DMA 0x227a
26*c9945492SAndroid Build Coastguard Worker #define SG_SET_FORCE_PACK_ID 0x227b
27*c9945492SAndroid Build Coastguard Worker #define SG_GET_PACK_ID 0x227c
28*c9945492SAndroid Build Coastguard Worker #define SG_GET_NUM_WAITING 0x227d
29*c9945492SAndroid Build Coastguard Worker #define SG_GET_SG_TABLESIZE 0x227F
30*c9945492SAndroid Build Coastguard Worker #define SG_GET_VERSION_NUM 0x2282
31*c9945492SAndroid Build Coastguard Worker #define SG_SCSI_RESET 0x2284
32*c9945492SAndroid Build Coastguard Worker #define SG_SCSI_RESET_NOTHING 0
33*c9945492SAndroid Build Coastguard Worker #define SG_SCSI_RESET_DEVICE 1
34*c9945492SAndroid Build Coastguard Worker #define SG_SCSI_RESET_BUS 2
35*c9945492SAndroid Build Coastguard Worker #define SG_SCSI_RESET_HOST 3
36*c9945492SAndroid Build Coastguard Worker #define SG_IO 0x2285
37*c9945492SAndroid Build Coastguard Worker #define SG_GET_REQUEST_TABLE 0x2286
38*c9945492SAndroid Build Coastguard Worker #define SG_SET_KEEP_ORPHAN 0x2287
39*c9945492SAndroid Build Coastguard Worker #define SG_GET_KEEP_ORPHAN 0x2288
40*c9945492SAndroid Build Coastguard Worker #define SG_SCATTER_SZ (8 * 4096)
41*c9945492SAndroid Build Coastguard Worker #define SG_DEFAULT_RETRIES 1
42*c9945492SAndroid Build Coastguard Worker #define SG_DEF_FORCE_LOW_DMA 0
43*c9945492SAndroid Build Coastguard Worker #define SG_DEF_FORCE_PACK_ID 0
44*c9945492SAndroid Build Coastguard Worker #define SG_DEF_KEEP_ORPHAN 0
45*c9945492SAndroid Build Coastguard Worker #define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ
46*c9945492SAndroid Build Coastguard Worker #define SG_MAX_QUEUE 16
47*c9945492SAndroid Build Coastguard Worker #define SG_BIG_BUFF SG_DEF_RESERVED_SIZE
48*c9945492SAndroid Build Coastguard Worker #define SG_MAX_SENSE 16
49*c9945492SAndroid Build Coastguard Worker #define SG_SET_TIMEOUT 0x2201
50*c9945492SAndroid Build Coastguard Worker #define SG_GET_TIMEOUT 0x2202
51*c9945492SAndroid Build Coastguard Worker #define SG_GET_COMMAND_Q 0x2270
52*c9945492SAndroid Build Coastguard Worker #define SG_SET_COMMAND_Q 0x2271
53*c9945492SAndroid Build Coastguard Worker #define SG_SET_DEBUG 0x227e
54*c9945492SAndroid Build Coastguard Worker #define SG_NEXT_CMD_LEN 0x2283
55*c9945492SAndroid Build Coastguard Worker #define SG_DEFAULT_TIMEOUT (60*100) /* 60*HZ */
56*c9945492SAndroid Build Coastguard Worker #define SG_DEF_COMMAND_Q 0
57*c9945492SAndroid Build Coastguard Worker #define SG_DEF_UNDERRUN_FLAG 0
58*c9945492SAndroid Build Coastguard Worker 
59*c9945492SAndroid Build Coastguard Worker typedef struct sg_iovec {
60*c9945492SAndroid Build Coastguard Worker 	void *iov_base;
61*c9945492SAndroid Build Coastguard Worker 	unsigned long iov_len;
62*c9945492SAndroid Build Coastguard Worker } sg_iovec_t;
63*c9945492SAndroid Build Coastguard Worker 
64*c9945492SAndroid Build Coastguard Worker typedef struct sg_io_hdr {
65*c9945492SAndroid Build Coastguard Worker 	int interface_id;
66*c9945492SAndroid Build Coastguard Worker 	int dxfer_direction;
67*c9945492SAndroid Build Coastguard Worker 	unsigned char cmd_len;
68*c9945492SAndroid Build Coastguard Worker 	unsigned char mx_sb_len;
69*c9945492SAndroid Build Coastguard Worker 	unsigned short iovec_count;
70*c9945492SAndroid Build Coastguard Worker 	unsigned dxfer_len;
71*c9945492SAndroid Build Coastguard Worker 	void *dxferp;
72*c9945492SAndroid Build Coastguard Worker 	unsigned char *cmdp;
73*c9945492SAndroid Build Coastguard Worker 	unsigned char *sbp;
74*c9945492SAndroid Build Coastguard Worker 	unsigned timeout;
75*c9945492SAndroid Build Coastguard Worker 	unsigned flags;
76*c9945492SAndroid Build Coastguard Worker 	int pack_id;
77*c9945492SAndroid Build Coastguard Worker 	void *usr_ptr;
78*c9945492SAndroid Build Coastguard Worker 	unsigned char status;
79*c9945492SAndroid Build Coastguard Worker 	unsigned char masked_status;
80*c9945492SAndroid Build Coastguard Worker 	unsigned char msg_status;
81*c9945492SAndroid Build Coastguard Worker 	unsigned char sb_len_wr;
82*c9945492SAndroid Build Coastguard Worker 	unsigned short host_status;
83*c9945492SAndroid Build Coastguard Worker 	unsigned short driver_status;
84*c9945492SAndroid Build Coastguard Worker 	int resid;
85*c9945492SAndroid Build Coastguard Worker 	unsigned int duration;
86*c9945492SAndroid Build Coastguard Worker 	unsigned int info;
87*c9945492SAndroid Build Coastguard Worker } sg_io_hdr_t;
88*c9945492SAndroid Build Coastguard Worker 
89*c9945492SAndroid Build Coastguard Worker struct sg_scsi_id {
90*c9945492SAndroid Build Coastguard Worker 	int host_no;
91*c9945492SAndroid Build Coastguard Worker 	int channel;
92*c9945492SAndroid Build Coastguard Worker 	int scsi_id;
93*c9945492SAndroid Build Coastguard Worker 	int lun;
94*c9945492SAndroid Build Coastguard Worker 	int scsi_type;
95*c9945492SAndroid Build Coastguard Worker 	short h_cmd_per_lun;
96*c9945492SAndroid Build Coastguard Worker 	short d_queue_depth;
97*c9945492SAndroid Build Coastguard Worker 	int unused[2];
98*c9945492SAndroid Build Coastguard Worker };
99*c9945492SAndroid Build Coastguard Worker 
100*c9945492SAndroid Build Coastguard Worker typedef struct sg_req_info {
101*c9945492SAndroid Build Coastguard Worker 	char req_state;
102*c9945492SAndroid Build Coastguard Worker 	char orphan;
103*c9945492SAndroid Build Coastguard Worker 	char sg_io_owned;
104*c9945492SAndroid Build Coastguard Worker 	char problem;
105*c9945492SAndroid Build Coastguard Worker 	int pack_id;
106*c9945492SAndroid Build Coastguard Worker 	void *usr_ptr;
107*c9945492SAndroid Build Coastguard Worker 	unsigned duration;
108*c9945492SAndroid Build Coastguard Worker 	int unused;
109*c9945492SAndroid Build Coastguard Worker } sg_req_info_t;
110*c9945492SAndroid Build Coastguard Worker 
111*c9945492SAndroid Build Coastguard Worker typedef struct sg_io_hdr Sg_io_hdr;
112*c9945492SAndroid Build Coastguard Worker typedef struct sg_io_vec Sg_io_vec;
113*c9945492SAndroid Build Coastguard Worker typedef struct sg_scsi_id Sg_scsi_id;
114*c9945492SAndroid Build Coastguard Worker typedef struct sg_req_info Sg_req_info;
115*c9945492SAndroid Build Coastguard Worker 
116*c9945492SAndroid Build Coastguard Worker struct sg_header {
117*c9945492SAndroid Build Coastguard Worker 	int pack_len;
118*c9945492SAndroid Build Coastguard Worker 	int reply_len;
119*c9945492SAndroid Build Coastguard Worker 	int pack_id;
120*c9945492SAndroid Build Coastguard Worker 	int result;
121*c9945492SAndroid Build Coastguard Worker 	unsigned twelve_byte:1;
122*c9945492SAndroid Build Coastguard Worker 	unsigned target_status:5;
123*c9945492SAndroid Build Coastguard Worker 	unsigned host_status:8;
124*c9945492SAndroid Build Coastguard Worker 	unsigned driver_status:8;
125*c9945492SAndroid Build Coastguard Worker 	unsigned other_flags:10;
126*c9945492SAndroid Build Coastguard Worker 	unsigned char sense_buffer[SG_MAX_SENSE];
127*c9945492SAndroid Build Coastguard Worker };
128*c9945492SAndroid Build Coastguard Worker 
129*c9945492SAndroid Build Coastguard Worker #endif
130