xref: /aosp_15_r20/bionic/libc/kernel/android/scsi/scsi/sg.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _SCSI_GENERIC_H
8*8d67ca89SAndroid Build Coastguard Worker #define _SCSI_GENERIC_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/compiler.h>
10*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_iovec {
11*8d67ca89SAndroid Build Coastguard Worker   void  * iov_base;
12*8d67ca89SAndroid Build Coastguard Worker   size_t iov_len;
13*8d67ca89SAndroid Build Coastguard Worker } sg_iovec_t;
14*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_io_hdr {
15*8d67ca89SAndroid Build Coastguard Worker   int interface_id;
16*8d67ca89SAndroid Build Coastguard Worker   int dxfer_direction;
17*8d67ca89SAndroid Build Coastguard Worker   unsigned char cmd_len;
18*8d67ca89SAndroid Build Coastguard Worker   unsigned char mx_sb_len;
19*8d67ca89SAndroid Build Coastguard Worker   unsigned short iovec_count;
20*8d67ca89SAndroid Build Coastguard Worker   unsigned int dxfer_len;
21*8d67ca89SAndroid Build Coastguard Worker   void  * dxferp;
22*8d67ca89SAndroid Build Coastguard Worker   unsigned char  * cmdp;
23*8d67ca89SAndroid Build Coastguard Worker   void  * sbp;
24*8d67ca89SAndroid Build Coastguard Worker   unsigned int timeout;
25*8d67ca89SAndroid Build Coastguard Worker   unsigned int flags;
26*8d67ca89SAndroid Build Coastguard Worker   int pack_id;
27*8d67ca89SAndroid Build Coastguard Worker   void  * usr_ptr;
28*8d67ca89SAndroid Build Coastguard Worker   unsigned char status;
29*8d67ca89SAndroid Build Coastguard Worker   unsigned char masked_status;
30*8d67ca89SAndroid Build Coastguard Worker   unsigned char msg_status;
31*8d67ca89SAndroid Build Coastguard Worker   unsigned char sb_len_wr;
32*8d67ca89SAndroid Build Coastguard Worker   unsigned short host_status;
33*8d67ca89SAndroid Build Coastguard Worker   unsigned short driver_status;
34*8d67ca89SAndroid Build Coastguard Worker   int resid;
35*8d67ca89SAndroid Build Coastguard Worker   unsigned int duration;
36*8d67ca89SAndroid Build Coastguard Worker   unsigned int info;
37*8d67ca89SAndroid Build Coastguard Worker } sg_io_hdr_t;
38*8d67ca89SAndroid Build Coastguard Worker #define SG_INTERFACE_ID_ORIG 'S'
39*8d67ca89SAndroid Build Coastguard Worker #define SG_DXFER_NONE (- 1)
40*8d67ca89SAndroid Build Coastguard Worker #define SG_DXFER_TO_DEV (- 2)
41*8d67ca89SAndroid Build Coastguard Worker #define SG_DXFER_FROM_DEV (- 3)
42*8d67ca89SAndroid Build Coastguard Worker #define SG_DXFER_TO_FROM_DEV (- 4)
43*8d67ca89SAndroid Build Coastguard Worker #define SG_DXFER_UNKNOWN (- 5)
44*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_DIRECT_IO 1
45*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_UNUSED_LUN_INHIBIT 2
46*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_MMAP_IO 4
47*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_NO_DXFER 0x10000
48*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_Q_AT_TAIL 0x10
49*8d67ca89SAndroid Build Coastguard Worker #define SG_FLAG_Q_AT_HEAD 0x20
50*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_OK_MASK 0x1
51*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_OK 0x0
52*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_CHECK 0x1
53*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_DIRECT_IO_MASK 0x6
54*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_INDIRECT_IO 0x0
55*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_DIRECT_IO 0x2
56*8d67ca89SAndroid Build Coastguard Worker #define SG_INFO_MIXED_IO 0x4
57*8d67ca89SAndroid Build Coastguard Worker #define DRIVER_SENSE 0x08
58*8d67ca89SAndroid Build Coastguard Worker #define driver_byte(result) (((result) >> 24) & 0xff)
59*8d67ca89SAndroid Build Coastguard Worker #define GOOD 0x00
60*8d67ca89SAndroid Build Coastguard Worker #define CHECK_CONDITION 0x01
61*8d67ca89SAndroid Build Coastguard Worker #define CONDITION_GOOD 0x02
62*8d67ca89SAndroid Build Coastguard Worker #define BUSY 0x04
63*8d67ca89SAndroid Build Coastguard Worker #define INTERMEDIATE_GOOD 0x08
64*8d67ca89SAndroid Build Coastguard Worker #define INTERMEDIATE_C_GOOD 0x0a
65*8d67ca89SAndroid Build Coastguard Worker #define RESERVATION_CONFLICT 0x0c
66*8d67ca89SAndroid Build Coastguard Worker #define COMMAND_TERMINATED 0x11
67*8d67ca89SAndroid Build Coastguard Worker #define QUEUE_FULL 0x14
68*8d67ca89SAndroid Build Coastguard Worker #define ACA_ACTIVE 0x18
69*8d67ca89SAndroid Build Coastguard Worker #define TASK_ABORTED 0x20
70*8d67ca89SAndroid Build Coastguard Worker #define sg_status_byte(result) (((result) >> 1) & 0x7f)
71*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_scsi_id {
72*8d67ca89SAndroid Build Coastguard Worker   int host_no;
73*8d67ca89SAndroid Build Coastguard Worker   int channel;
74*8d67ca89SAndroid Build Coastguard Worker   int scsi_id;
75*8d67ca89SAndroid Build Coastguard Worker   int lun;
76*8d67ca89SAndroid Build Coastguard Worker   int scsi_type;
77*8d67ca89SAndroid Build Coastguard Worker   short h_cmd_per_lun;
78*8d67ca89SAndroid Build Coastguard Worker   short d_queue_depth;
79*8d67ca89SAndroid Build Coastguard Worker   int unused[2];
80*8d67ca89SAndroid Build Coastguard Worker } sg_scsi_id_t;
81*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_req_info {
82*8d67ca89SAndroid Build Coastguard Worker   char req_state;
83*8d67ca89SAndroid Build Coastguard Worker   char orphan;
84*8d67ca89SAndroid Build Coastguard Worker   char sg_io_owned;
85*8d67ca89SAndroid Build Coastguard Worker   char problem;
86*8d67ca89SAndroid Build Coastguard Worker   int pack_id;
87*8d67ca89SAndroid Build Coastguard Worker   void  * usr_ptr;
88*8d67ca89SAndroid Build Coastguard Worker   unsigned int duration;
89*8d67ca89SAndroid Build Coastguard Worker   int unused;
90*8d67ca89SAndroid Build Coastguard Worker } sg_req_info_t;
91*8d67ca89SAndroid Build Coastguard Worker #define SG_EMULATED_HOST 0x2203
92*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_TRANSFORM 0x2204
93*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_TRANSFORM 0x2205
94*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_RESERVED_SIZE 0x2275
95*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_RESERVED_SIZE 0x2272
96*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_SCSI_ID 0x2276
97*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_FORCE_LOW_DMA 0x2279
98*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_LOW_DMA 0x227a
99*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_FORCE_PACK_ID 0x227b
100*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_PACK_ID 0x227c
101*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_NUM_WAITING 0x227d
102*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_SG_TABLESIZE 0x227F
103*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_VERSION_NUM 0x2282
104*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET 0x2284
105*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_NOTHING 0
106*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_DEVICE 1
107*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_BUS 2
108*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_HOST 3
109*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_TARGET 4
110*8d67ca89SAndroid Build Coastguard Worker #define SG_SCSI_RESET_NO_ESCALATE 0x100
111*8d67ca89SAndroid Build Coastguard Worker #define SG_IO 0x2285
112*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_REQUEST_TABLE 0x2286
113*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_KEEP_ORPHAN 0x2287
114*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_KEEP_ORPHAN 0x2288
115*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_ACCESS_COUNT 0x2289
116*8d67ca89SAndroid Build Coastguard Worker #define SG_SCATTER_SZ (8 * 4096)
117*8d67ca89SAndroid Build Coastguard Worker #define SG_DEFAULT_RETRIES 0
118*8d67ca89SAndroid Build Coastguard Worker #define SG_DEF_FORCE_PACK_ID 0
119*8d67ca89SAndroid Build Coastguard Worker #define SG_DEF_KEEP_ORPHAN 0
120*8d67ca89SAndroid Build Coastguard Worker #define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ
121*8d67ca89SAndroid Build Coastguard Worker #define SG_MAX_QUEUE 16
122*8d67ca89SAndroid Build Coastguard Worker #define SG_BIG_BUFF SG_DEF_RESERVED_SIZE
123*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_io_hdr Sg_io_hdr;
124*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_io_vec Sg_io_vec;
125*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_scsi_id Sg_scsi_id;
126*8d67ca89SAndroid Build Coastguard Worker typedef struct sg_req_info Sg_req_info;
127*8d67ca89SAndroid Build Coastguard Worker #define SG_MAX_SENSE 16
128*8d67ca89SAndroid Build Coastguard Worker struct sg_header {
129*8d67ca89SAndroid Build Coastguard Worker   int pack_len;
130*8d67ca89SAndroid Build Coastguard Worker   int reply_len;
131*8d67ca89SAndroid Build Coastguard Worker   int pack_id;
132*8d67ca89SAndroid Build Coastguard Worker   int result;
133*8d67ca89SAndroid Build Coastguard Worker   unsigned int twelve_byte : 1;
134*8d67ca89SAndroid Build Coastguard Worker   unsigned int target_status : 5;
135*8d67ca89SAndroid Build Coastguard Worker   unsigned int host_status : 8;
136*8d67ca89SAndroid Build Coastguard Worker   unsigned int driver_status : 8;
137*8d67ca89SAndroid Build Coastguard Worker   unsigned int other_flags : 10;
138*8d67ca89SAndroid Build Coastguard Worker   unsigned char sense_buffer[SG_MAX_SENSE];
139*8d67ca89SAndroid Build Coastguard Worker };
140*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_TIMEOUT 0x2201
141*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_TIMEOUT 0x2202
142*8d67ca89SAndroid Build Coastguard Worker #define SG_GET_COMMAND_Q 0x2270
143*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_COMMAND_Q 0x2271
144*8d67ca89SAndroid Build Coastguard Worker #define SG_SET_DEBUG 0x227e
145*8d67ca89SAndroid Build Coastguard Worker #define SG_NEXT_CMD_LEN 0x2283
146*8d67ca89SAndroid Build Coastguard Worker #define SG_DEFAULT_TIMEOUT (60 * HZ)
147*8d67ca89SAndroid Build Coastguard Worker #define SG_DEF_COMMAND_Q 0
148*8d67ca89SAndroid Build Coastguard Worker #define SG_DEF_UNDERRUN_FLAG 0
149*8d67ca89SAndroid Build Coastguard Worker #endif
150