linux/include/linux/usb/uas.h
<<
>>
Prefs
   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
  70