hc
2024-11-01 7e970c18f85f99acc678d90128b6e01dce1bf273
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// SPDX-License-Identifier: GPL-2.0
#ifndef __LINUX_USB_STORAGE_H
#define __LINUX_USB_STORAGE_H
 
/*
 * linux/usb/storage.h
 *
 * Copyright Matthew Wilcox for Intel Corp, 2010
 *
 * This file contains definitions taken from the
 * USB Mass Storage Class Specification Overview
 *
 * Distributed under the terms of the GNU GPL, version two.
 */
 
/* Storage subclass codes */
 
#define USB_SC_RBC    0x01        /* Typically, flash devices */
#define USB_SC_8020    0x02        /* CD-ROM */
#define USB_SC_QIC    0x03        /* QIC-157 Tapes */
#define USB_SC_UFI    0x04        /* Floppy */
#define USB_SC_8070    0x05        /* Removable media */
#define USB_SC_SCSI    0x06        /* Transparent */
#define USB_SC_LOCKABLE    0x07        /* Password-protected */
 
#define USB_SC_ISD200    0xf0        /* ISD200 ATA */
#define USB_SC_CYP_ATACB    0xf1    /* Cypress ATACB */
#define USB_SC_DEVICE    0xff        /* Use device's value */
 
/* Storage protocol codes */
 
#define USB_PR_CBI    0x00        /* Control/Bulk/Interrupt */
#define USB_PR_CB    0x01        /* Control/Bulk w/o interrupt */
#define USB_PR_BULK    0x50        /* bulk only */
#define USB_PR_UAS    0x62        /* USB Attached SCSI */
 
#define USB_PR_USBAT    0x80        /* SCM-ATAPI bridge */
#define USB_PR_EUSB_SDDR09    0x81    /* SCM-SCSI bridge for SDDR-09 */
#define USB_PR_SDDR55    0x82        /* SDDR-55 (made up) */
#define USB_PR_DPCM_USB    0xf0        /* Combination CB/SDDR09 */
#define USB_PR_FREECOM    0xf1        /* Freecom */
#define USB_PR_DATAFAB    0xf2        /* Datafab chipsets */
#define USB_PR_JUMPSHOT    0xf3        /* Lexar Jumpshot */
#define USB_PR_ALAUDA    0xf4        /* Alauda chipsets */
#define USB_PR_KARMA    0xf5        /* Rio Karma */
 
#define USB_PR_DEVICE    0xff        /* Use device's value */
 
/*
 * Bulk only data structures
 */
 
/* command block wrapper */
struct bulk_cb_wrap {
   __le32    Signature;        /* contains 'USBC' */
   __u32    Tag;            /* unique per command id */
   __le32    DataTransferLength;    /* size of data */
   __u8    Flags;            /* direction in bit 0 */
   __u8    Lun;            /* LUN normally 0 */
   __u8    Length;            /* length of the CDB */
   __u8    CDB[16];        /* max command */
};
 
#define US_BULK_CB_WRAP_LEN    31
#define US_BULK_CB_SIGN        0x43425355    /* spells out 'USBC' */
#define US_BULK_FLAG_IN        (1 << 7)
#define US_BULK_FLAG_OUT    0
 
/* command status wrapper */
struct bulk_cs_wrap {
   __le32    Signature;    /* contains 'USBS' */
   __u32    Tag;        /* same as original command */
   __le32    Residue;    /* amount not transferred */
   __u8    Status;        /* see below */
};
 
#define US_BULK_CS_WRAP_LEN    13
#define US_BULK_CS_SIGN        0x53425355      /* spells out 'USBS' */
#define US_BULK_STAT_OK        0
#define US_BULK_STAT_FAIL    1
#define US_BULK_STAT_PHASE    2
 
/* bulk-only class specific requests */
#define US_BULK_RESET_REQUEST   0xff
#define US_BULK_GET_MAX_LUN     0xfe
 
#endif