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