at v3.4 1.1 kB view raw
1#ifndef __USB_UAS_H__ 2#define __USB_UAS_H__ 3 4#include <scsi/scsi.h> 5#include <scsi/scsi_cmnd.h> 6 7/* Common header for all IUs */ 8struct iu { 9 __u8 iu_id; 10 __u8 rsvd1; 11 __be16 tag; 12}; 13 14enum { 15 IU_ID_COMMAND = 0x01, 16 IU_ID_STATUS = 0x03, 17 IU_ID_RESPONSE = 0x04, 18 IU_ID_TASK_MGMT = 0x05, 19 IU_ID_READ_READY = 0x06, 20 IU_ID_WRITE_READY = 0x07, 21}; 22 23struct command_iu { 24 __u8 iu_id; 25 __u8 rsvd1; 26 __be16 tag; 27 __u8 prio_attr; 28 __u8 rsvd5; 29 __u8 len; 30 __u8 rsvd7; 31 struct scsi_lun lun; 32 __u8 cdb[16]; /* XXX: Overflow-checking tools may misunderstand */ 33}; 34 35/* 36 * Also used for the Read Ready and Write Ready IUs since they have the 37 * same first four bytes 38 */ 39struct sense_iu { 40 __u8 iu_id; 41 __u8 rsvd1; 42 __be16 tag; 43 __be16 status_qual; 44 __u8 status; 45 __u8 rsvd7[7]; 46 __be16 len; 47 __u8 sense[SCSI_SENSE_BUFFERSIZE]; 48}; 49 50struct usb_pipe_usage_descriptor { 51 __u8 bLength; 52 __u8 bDescriptorType; 53 54 __u8 bPipeID; 55 __u8 Reserved; 56} __attribute__((__packed__)); 57 58enum { 59 CMD_PIPE_ID = 1, 60 STATUS_PIPE_ID = 2, 61 DATA_IN_PIPE_ID = 3, 62 DATA_OUT_PIPE_ID = 4, 63 64 UAS_SIMPLE_TAG = 0, 65 UAS_HEAD_TAG = 1, 66 UAS_ORDERED_TAG = 2, 67 UAS_ACA = 4, 68}; 69#endif