aboutsummaryrefslogtreecommitdiffstats
path: root/usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch
diff options
Diffstat (limited to 'usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch')
-rw-r--r--usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch693
1 files changed, 693 insertions, 0 deletions
diff --git a/usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch b/usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch
new file mode 100644
index 00000000000000..043d2d18a02938
--- /dev/null
+++ b/usb-gadget-storage-reuse-definitions-from-scsi.h-header-file.patch
@@ -0,0 +1,693 @@
+From m.nazarewicz@samsung.com Thu Oct 7 15:04:07 2010
+Date: Thu, 07 Oct 2010 14:46:15 +0200
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Subject: USB: gadget: storage: reuse definitions from scsi.h header file
+To: Greg KH <greg@kroah.com>
+Cc: Matthew Wilcox <willy@linux.intel.com>,
+ Michal Nazarewicz <mina86@mina86.com>,
+ "James E.J. Bottomley" <James.Bottomley@suse.de>, linux-usb@vger.kernel.org,
+ linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
+ Alan Stern <stern@rowland.harvard.edu>
+Message-id: <b1c00282f3bd2ae950f081aec444ee15e99b6629.1286455365.git.m.nazarewicz@samsung.com>
+
+From: Michal Nazarewicz <mina86@mina86.com>
+
+This commit changes storage_common.h, file_storage.c and
+f_mass_storage.c to use definitions of SCSI commands from
+scsi/scsi.h file instead of redefining the commands in
+storage_common.c.
+
+scsi/scsi.h header file was missing READ_FORMAT_CAPACITIES and
+READ_HEADER so this commit also add those to the header.
+
+Signed-off-by: Michal Nazarewicz <mina86@mina86.com>
+Cc: Alan Stern <stern@rowland.harvard.edu>
+Cc: James Bottomley <James.Bottomley@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/f_mass_storage.c | 72 +++++++++++++++++------------------
+ drivers/usb/gadget/file_storage.c | 74 ++++++++++++++++++------------------
+ drivers/usb/gadget/storage_common.c | 34 ----------------
+ include/scsi/scsi.h | 2
+ 4 files changed, 77 insertions(+), 105 deletions(-)
+
+--- a/drivers/usb/gadget/f_mass_storage.c
++++ b/drivers/usb/gadget/f_mass_storage.c
+@@ -741,7 +741,7 @@ static int do_read(struct fsg_common *co
+
+ /* Get the starting Logical Block Address and check that it's
+ * not too big */
+- if (common->cmnd[0] == SC_READ_6)
++ if (common->cmnd[0] == READ_6)
+ lba = get_unaligned_be24(&common->cmnd[1]);
+ else {
+ lba = get_unaligned_be32(&common->cmnd[2]);
+@@ -879,7 +879,7 @@ static int do_write(struct fsg_common *c
+
+ /* Get the starting Logical Block Address and check that it's
+ * not too big */
+- if (common->cmnd[0] == SC_WRITE_6)
++ if (common->cmnd[0] == WRITE_6)
+ lba = get_unaligned_be24(&common->cmnd[1]);
+ else {
+ lba = get_unaligned_be32(&common->cmnd[2]);
+@@ -1186,7 +1186,7 @@ static int do_inquiry(struct fsg_common
+ return 36;
+ }
+
+- buf[0] = curlun->cdrom ? TYPE_CDROM : TYPE_DISK;
++ buf[0] = curlun->cdrom ? TYPE_ROM : TYPE_DISK;
+ buf[1] = curlun->removable ? 0x80 : 0;
+ buf[2] = 2; /* ANSI SCSI level 2 */
+ buf[3] = 2; /* SCSI-2 INQUIRY data format */
+@@ -1353,11 +1353,11 @@ static int do_mode_sense(struct fsg_comm
+ * The only variable value is the WriteProtect bit. We will fill in
+ * the mode data length later. */
+ memset(buf, 0, 8);
+- if (mscmnd == SC_MODE_SENSE_6) {
++ if (mscmnd == MODE_SENSE) {
+ buf[2] = (curlun->ro ? 0x80 : 0x00); /* WP, DPOFUA */
+ buf += 4;
+ limit = 255;
+- } else { /* SC_MODE_SENSE_10 */
++ } else { /* MODE_SENSE_10 */
+ buf[3] = (curlun->ro ? 0x80 : 0x00); /* WP, DPOFUA */
+ buf += 8;
+ limit = 65535; /* Should really be FSG_BUFLEN */
+@@ -1397,7 +1397,7 @@ static int do_mode_sense(struct fsg_comm
+ }
+
+ /* Store the mode data length */
+- if (mscmnd == SC_MODE_SENSE_6)
++ if (mscmnd == MODE_SENSE)
+ buf0[0] = len - 1;
+ else
+ put_unaligned_be16(len - 2, buf0);
+@@ -1886,7 +1886,7 @@ static int check_command(struct fsg_comm
+ if (common->lun >= 0 && common->lun < common->nluns) {
+ curlun = &common->luns[common->lun];
+ common->curlun = curlun;
+- if (common->cmnd[0] != SC_REQUEST_SENSE) {
++ if (common->cmnd[0] != REQUEST_SENSE) {
+ curlun->sense_data = SS_NO_SENSE;
+ curlun->sense_data_info = 0;
+ curlun->info_valid = 0;
+@@ -1898,8 +1898,8 @@ static int check_command(struct fsg_comm
+
+ /* INQUIRY and REQUEST SENSE commands are explicitly allowed
+ * to use unsupported LUNs; all others may not. */
+- if (common->cmnd[0] != SC_INQUIRY &&
+- common->cmnd[0] != SC_REQUEST_SENSE) {
++ if (common->cmnd[0] != INQUIRY &&
++ common->cmnd[0] != REQUEST_SENSE) {
+ DBG(common, "unsupported LUN %d\n", common->lun);
+ return -EINVAL;
+ }
+@@ -1908,8 +1908,8 @@ static int check_command(struct fsg_comm
+ /* If a unit attention condition exists, only INQUIRY and
+ * REQUEST SENSE commands are allowed; anything else must fail. */
+ if (curlun && curlun->unit_attention_data != SS_NO_SENSE &&
+- common->cmnd[0] != SC_INQUIRY &&
+- common->cmnd[0] != SC_REQUEST_SENSE) {
++ common->cmnd[0] != INQUIRY &&
++ common->cmnd[0] != REQUEST_SENSE) {
+ curlun->sense_data = curlun->unit_attention_data;
+ curlun->unit_attention_data = SS_NO_SENSE;
+ return -EINVAL;
+@@ -1960,7 +1960,7 @@ static int do_scsi_command(struct fsg_co
+ down_read(&common->filesem); /* We're using the backing file */
+ switch (common->cmnd[0]) {
+
+- case SC_INQUIRY:
++ case INQUIRY:
+ common->data_size_from_cmnd = common->cmnd[4];
+ reply = check_command(common, 6, DATA_DIR_TO_HOST,
+ (1<<4), 0,
+@@ -1969,7 +1969,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_inquiry(common, bh);
+ break;
+
+- case SC_MODE_SELECT_6:
++ case MODE_SELECT:
+ common->data_size_from_cmnd = common->cmnd[4];
+ reply = check_command(common, 6, DATA_DIR_FROM_HOST,
+ (1<<1) | (1<<4), 0,
+@@ -1978,7 +1978,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_mode_select(common, bh);
+ break;
+
+- case SC_MODE_SELECT_10:
++ case MODE_SELECT_10:
+ common->data_size_from_cmnd =
+ get_unaligned_be16(&common->cmnd[7]);
+ reply = check_command(common, 10, DATA_DIR_FROM_HOST,
+@@ -1988,7 +1988,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_mode_select(common, bh);
+ break;
+
+- case SC_MODE_SENSE_6:
++ case MODE_SENSE:
+ common->data_size_from_cmnd = common->cmnd[4];
+ reply = check_command(common, 6, DATA_DIR_TO_HOST,
+ (1<<1) | (1<<2) | (1<<4), 0,
+@@ -1997,7 +1997,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_mode_sense(common, bh);
+ break;
+
+- case SC_MODE_SENSE_10:
++ case MODE_SENSE_10:
+ common->data_size_from_cmnd =
+ get_unaligned_be16(&common->cmnd[7]);
+ reply = check_command(common, 10, DATA_DIR_TO_HOST,
+@@ -2007,7 +2007,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_mode_sense(common, bh);
+ break;
+
+- case SC_PREVENT_ALLOW_MEDIUM_REMOVAL:
++ case ALLOW_MEDIUM_REMOVAL:
+ common->data_size_from_cmnd = 0;
+ reply = check_command(common, 6, DATA_DIR_NONE,
+ (1<<4), 0,
+@@ -2016,7 +2016,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_prevent_allow(common);
+ break;
+
+- case SC_READ_6:
++ case READ_6:
+ i = common->cmnd[4];
+ common->data_size_from_cmnd = (i == 0 ? 256 : i) << 9;
+ reply = check_command(common, 6, DATA_DIR_TO_HOST,
+@@ -2026,7 +2026,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read(common);
+ break;
+
+- case SC_READ_10:
++ case READ_10:
+ common->data_size_from_cmnd =
+ get_unaligned_be16(&common->cmnd[7]) << 9;
+ reply = check_command(common, 10, DATA_DIR_TO_HOST,
+@@ -2036,7 +2036,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read(common);
+ break;
+
+- case SC_READ_12:
++ case READ_12:
+ common->data_size_from_cmnd =
+ get_unaligned_be32(&common->cmnd[6]) << 9;
+ reply = check_command(common, 12, DATA_DIR_TO_HOST,
+@@ -2046,7 +2046,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read(common);
+ break;
+
+- case SC_READ_CAPACITY:
++ case READ_CAPACITY:
+ common->data_size_from_cmnd = 8;
+ reply = check_command(common, 10, DATA_DIR_TO_HOST,
+ (0xf<<2) | (1<<8), 1,
+@@ -2055,7 +2055,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read_capacity(common, bh);
+ break;
+
+- case SC_READ_HEADER:
++ case READ_HEADER:
+ if (!common->curlun || !common->curlun->cdrom)
+ goto unknown_cmnd;
+ common->data_size_from_cmnd =
+@@ -2067,7 +2067,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read_header(common, bh);
+ break;
+
+- case SC_READ_TOC:
++ case READ_TOC:
+ if (!common->curlun || !common->curlun->cdrom)
+ goto unknown_cmnd;
+ common->data_size_from_cmnd =
+@@ -2079,7 +2079,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read_toc(common, bh);
+ break;
+
+- case SC_READ_FORMAT_CAPACITIES:
++ case READ_FORMAT_CAPACITIES:
+ common->data_size_from_cmnd =
+ get_unaligned_be16(&common->cmnd[7]);
+ reply = check_command(common, 10, DATA_DIR_TO_HOST,
+@@ -2089,7 +2089,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_read_format_capacities(common, bh);
+ break;
+
+- case SC_REQUEST_SENSE:
++ case REQUEST_SENSE:
+ common->data_size_from_cmnd = common->cmnd[4];
+ reply = check_command(common, 6, DATA_DIR_TO_HOST,
+ (1<<4), 0,
+@@ -2098,7 +2098,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_request_sense(common, bh);
+ break;
+
+- case SC_START_STOP_UNIT:
++ case START_STOP:
+ common->data_size_from_cmnd = 0;
+ reply = check_command(common, 6, DATA_DIR_NONE,
+ (1<<1) | (1<<4), 0,
+@@ -2107,7 +2107,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_start_stop(common);
+ break;
+
+- case SC_SYNCHRONIZE_CACHE:
++ case SYNCHRONIZE_CACHE:
+ common->data_size_from_cmnd = 0;
+ reply = check_command(common, 10, DATA_DIR_NONE,
+ (0xf<<2) | (3<<7), 1,
+@@ -2116,7 +2116,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_synchronize_cache(common);
+ break;
+
+- case SC_TEST_UNIT_READY:
++ case TEST_UNIT_READY:
+ common->data_size_from_cmnd = 0;
+ reply = check_command(common, 6, DATA_DIR_NONE,
+ 0, 1,
+@@ -2125,7 +2125,7 @@ static int do_scsi_command(struct fsg_co
+
+ /* Although optional, this command is used by MS-Windows. We
+ * support a minimal version: BytChk must be 0. */
+- case SC_VERIFY:
++ case VERIFY:
+ common->data_size_from_cmnd = 0;
+ reply = check_command(common, 10, DATA_DIR_NONE,
+ (1<<1) | (0xf<<2) | (3<<7), 1,
+@@ -2134,7 +2134,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_verify(common);
+ break;
+
+- case SC_WRITE_6:
++ case WRITE_6:
+ i = common->cmnd[4];
+ common->data_size_from_cmnd = (i == 0 ? 256 : i) << 9;
+ reply = check_command(common, 6, DATA_DIR_FROM_HOST,
+@@ -2144,7 +2144,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_write(common);
+ break;
+
+- case SC_WRITE_10:
++ case WRITE_10:
+ common->data_size_from_cmnd =
+ get_unaligned_be16(&common->cmnd[7]) << 9;
+ reply = check_command(common, 10, DATA_DIR_FROM_HOST,
+@@ -2154,7 +2154,7 @@ static int do_scsi_command(struct fsg_co
+ reply = do_write(common);
+ break;
+
+- case SC_WRITE_12:
++ case WRITE_12:
+ common->data_size_from_cmnd =
+ get_unaligned_be32(&common->cmnd[6]) << 9;
+ reply = check_command(common, 12, DATA_DIR_FROM_HOST,
+@@ -2168,10 +2168,10 @@ static int do_scsi_command(struct fsg_co
+ * They don't mean much in this setting. It's left as an exercise
+ * for anyone interested to implement RESERVE and RELEASE in terms
+ * of Posix locks. */
+- case SC_FORMAT_UNIT:
+- case SC_RELEASE:
+- case SC_RESERVE:
+- case SC_SEND_DIAGNOSTIC:
++ case FORMAT_UNIT:
++ case RELEASE:
++ case RESERVE:
++ case SEND_DIAGNOSTIC:
+ /* Fall through */
+
+ default:
+--- a/drivers/usb/gadget/file_storage.c
++++ b/drivers/usb/gadget/file_storage.c
+@@ -783,7 +783,7 @@ static void received_cbi_adsc(struct fsg
+ {
+ struct usb_request *req = fsg->ep0req;
+ static u8 cbi_reset_cmnd[6] = {
+- SC_SEND_DIAGNOSTIC, 4, 0xff, 0xff, 0xff, 0xff};
++ SEND_DIAGNOSTIC, 4, 0xff, 0xff, 0xff, 0xff};
+
+ /* Error in command transfer? */
+ if (req->status || req->length != req->actual ||
+@@ -1135,7 +1135,7 @@ static int do_read(struct fsg_dev *fsg)
+
+ /* Get the starting Logical Block Address and check that it's
+ * not too big */
+- if (fsg->cmnd[0] == SC_READ_6)
++ if (fsg->cmnd[0] == READ_6)
+ lba = get_unaligned_be24(&fsg->cmnd[1]);
+ else {
+ lba = get_unaligned_be32(&fsg->cmnd[2]);
+@@ -1270,7 +1270,7 @@ static int do_write(struct fsg_dev *fsg)
+
+ /* Get the starting Logical Block Address and check that it's
+ * not too big */
+- if (fsg->cmnd[0] == SC_WRITE_6)
++ if (fsg->cmnd[0] == WRITE_6)
+ lba = get_unaligned_be24(&fsg->cmnd[1]);
+ else {
+ lba = get_unaligned_be32(&fsg->cmnd[2]);
+@@ -1578,7 +1578,7 @@ static int do_inquiry(struct fsg_dev *fs
+ }
+
+ memset(buf, 0, 8);
+- buf[0] = (mod_data.cdrom ? TYPE_CDROM : TYPE_DISK);
++ buf[0] = (mod_data.cdrom ? TYPE_ROM : TYPE_DISK);
+ if (mod_data.removable)
+ buf[1] = 0x80;
+ buf[2] = 2; // ANSI SCSI level 2
+@@ -1747,11 +1747,11 @@ static int do_mode_sense(struct fsg_dev
+ * The only variable value is the WriteProtect bit. We will fill in
+ * the mode data length later. */
+ memset(buf, 0, 8);
+- if (mscmnd == SC_MODE_SENSE_6) {
++ if (mscmnd == MODE_SENSE) {
+ buf[2] = (curlun->ro ? 0x80 : 0x00); // WP, DPOFUA
+ buf += 4;
+ limit = 255;
+- } else { // SC_MODE_SENSE_10
++ } else { // MODE_SENSE_10
+ buf[3] = (curlun->ro ? 0x80 : 0x00); // WP, DPOFUA
+ buf += 8;
+ limit = 65535; // Should really be mod_data.buflen
+@@ -1791,7 +1791,7 @@ static int do_mode_sense(struct fsg_dev
+ }
+
+ /* Store the mode data length */
+- if (mscmnd == SC_MODE_SENSE_6)
++ if (mscmnd == MODE_SENSE)
+ buf0[0] = len - 1;
+ else
+ put_unaligned_be16(len - 2, buf0);
+@@ -2316,7 +2316,7 @@ static int check_command(struct fsg_dev
+ /* Check the LUN */
+ if (fsg->lun >= 0 && fsg->lun < fsg->nluns) {
+ fsg->curlun = curlun = &fsg->luns[fsg->lun];
+- if (fsg->cmnd[0] != SC_REQUEST_SENSE) {
++ if (fsg->cmnd[0] != REQUEST_SENSE) {
+ curlun->sense_data = SS_NO_SENSE;
+ curlun->sense_data_info = 0;
+ curlun->info_valid = 0;
+@@ -2327,8 +2327,8 @@ static int check_command(struct fsg_dev
+
+ /* INQUIRY and REQUEST SENSE commands are explicitly allowed
+ * to use unsupported LUNs; all others may not. */
+- if (fsg->cmnd[0] != SC_INQUIRY &&
+- fsg->cmnd[0] != SC_REQUEST_SENSE) {
++ if (fsg->cmnd[0] != INQUIRY &&
++ fsg->cmnd[0] != REQUEST_SENSE) {
+ DBG(fsg, "unsupported LUN %d\n", fsg->lun);
+ return -EINVAL;
+ }
+@@ -2337,8 +2337,8 @@ static int check_command(struct fsg_dev
+ /* If a unit attention condition exists, only INQUIRY and
+ * REQUEST SENSE commands are allowed; anything else must fail. */
+ if (curlun && curlun->unit_attention_data != SS_NO_SENSE &&
+- fsg->cmnd[0] != SC_INQUIRY &&
+- fsg->cmnd[0] != SC_REQUEST_SENSE) {
++ fsg->cmnd[0] != INQUIRY &&
++ fsg->cmnd[0] != REQUEST_SENSE) {
+ curlun->sense_data = curlun->unit_attention_data;
+ curlun->unit_attention_data = SS_NO_SENSE;
+ return -EINVAL;
+@@ -2388,7 +2388,7 @@ static int do_scsi_command(struct fsg_de
+ down_read(&fsg->filesem); // We're using the backing file
+ switch (fsg->cmnd[0]) {
+
+- case SC_INQUIRY:
++ case INQUIRY:
+ fsg->data_size_from_cmnd = fsg->cmnd[4];
+ if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST,
+ (1<<4), 0,
+@@ -2396,7 +2396,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_inquiry(fsg, bh);
+ break;
+
+- case SC_MODE_SELECT_6:
++ case MODE_SELECT:
+ fsg->data_size_from_cmnd = fsg->cmnd[4];
+ if ((reply = check_command(fsg, 6, DATA_DIR_FROM_HOST,
+ (1<<1) | (1<<4), 0,
+@@ -2404,7 +2404,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_mode_select(fsg, bh);
+ break;
+
+- case SC_MODE_SELECT_10:
++ case MODE_SELECT_10:
+ fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]);
+ if ((reply = check_command(fsg, 10, DATA_DIR_FROM_HOST,
+ (1<<1) | (3<<7), 0,
+@@ -2412,7 +2412,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_mode_select(fsg, bh);
+ break;
+
+- case SC_MODE_SENSE_6:
++ case MODE_SENSE:
+ fsg->data_size_from_cmnd = fsg->cmnd[4];
+ if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST,
+ (1<<1) | (1<<2) | (1<<4), 0,
+@@ -2420,7 +2420,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_mode_sense(fsg, bh);
+ break;
+
+- case SC_MODE_SENSE_10:
++ case MODE_SENSE_10:
+ fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]);
+ if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST,
+ (1<<1) | (1<<2) | (3<<7), 0,
+@@ -2428,7 +2428,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_mode_sense(fsg, bh);
+ break;
+
+- case SC_PREVENT_ALLOW_MEDIUM_REMOVAL:
++ case ALLOW_MEDIUM_REMOVAL:
+ fsg->data_size_from_cmnd = 0;
+ if ((reply = check_command(fsg, 6, DATA_DIR_NONE,
+ (1<<4), 0,
+@@ -2436,7 +2436,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_prevent_allow(fsg);
+ break;
+
+- case SC_READ_6:
++ case READ_6:
+ i = fsg->cmnd[4];
+ fsg->data_size_from_cmnd = (i == 0 ? 256 : i) << 9;
+ if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST,
+@@ -2445,7 +2445,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read(fsg);
+ break;
+
+- case SC_READ_10:
++ case READ_10:
+ fsg->data_size_from_cmnd =
+ get_unaligned_be16(&fsg->cmnd[7]) << 9;
+ if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST,
+@@ -2454,7 +2454,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read(fsg);
+ break;
+
+- case SC_READ_12:
++ case READ_12:
+ fsg->data_size_from_cmnd =
+ get_unaligned_be32(&fsg->cmnd[6]) << 9;
+ if ((reply = check_command(fsg, 12, DATA_DIR_TO_HOST,
+@@ -2463,7 +2463,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read(fsg);
+ break;
+
+- case SC_READ_CAPACITY:
++ case READ_CAPACITY:
+ fsg->data_size_from_cmnd = 8;
+ if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST,
+ (0xf<<2) | (1<<8), 1,
+@@ -2471,7 +2471,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read_capacity(fsg, bh);
+ break;
+
+- case SC_READ_HEADER:
++ case READ_HEADER:
+ if (!mod_data.cdrom)
+ goto unknown_cmnd;
+ fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]);
+@@ -2481,7 +2481,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read_header(fsg, bh);
+ break;
+
+- case SC_READ_TOC:
++ case READ_TOC:
+ if (!mod_data.cdrom)
+ goto unknown_cmnd;
+ fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]);
+@@ -2491,7 +2491,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read_toc(fsg, bh);
+ break;
+
+- case SC_READ_FORMAT_CAPACITIES:
++ case READ_FORMAT_CAPACITIES:
+ fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]);
+ if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST,
+ (3<<7), 1,
+@@ -2499,7 +2499,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_read_format_capacities(fsg, bh);
+ break;
+
+- case SC_REQUEST_SENSE:
++ case REQUEST_SENSE:
+ fsg->data_size_from_cmnd = fsg->cmnd[4];
+ if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST,
+ (1<<4), 0,
+@@ -2507,7 +2507,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_request_sense(fsg, bh);
+ break;
+
+- case SC_START_STOP_UNIT:
++ case START_STOP:
+ fsg->data_size_from_cmnd = 0;
+ if ((reply = check_command(fsg, 6, DATA_DIR_NONE,
+ (1<<1) | (1<<4), 0,
+@@ -2515,7 +2515,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_start_stop(fsg);
+ break;
+
+- case SC_SYNCHRONIZE_CACHE:
++ case SYNCHRONIZE_CACHE:
+ fsg->data_size_from_cmnd = 0;
+ if ((reply = check_command(fsg, 10, DATA_DIR_NONE,
+ (0xf<<2) | (3<<7), 1,
+@@ -2523,7 +2523,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_synchronize_cache(fsg);
+ break;
+
+- case SC_TEST_UNIT_READY:
++ case TEST_UNIT_READY:
+ fsg->data_size_from_cmnd = 0;
+ reply = check_command(fsg, 6, DATA_DIR_NONE,
+ 0, 1,
+@@ -2532,7 +2532,7 @@ static int do_scsi_command(struct fsg_de
+
+ /* Although optional, this command is used by MS-Windows. We
+ * support a minimal version: BytChk must be 0. */
+- case SC_VERIFY:
++ case VERIFY:
+ fsg->data_size_from_cmnd = 0;
+ if ((reply = check_command(fsg, 10, DATA_DIR_NONE,
+ (1<<1) | (0xf<<2) | (3<<7), 1,
+@@ -2540,7 +2540,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_verify(fsg);
+ break;
+
+- case SC_WRITE_6:
++ case WRITE_6:
+ i = fsg->cmnd[4];
+ fsg->data_size_from_cmnd = (i == 0 ? 256 : i) << 9;
+ if ((reply = check_command(fsg, 6, DATA_DIR_FROM_HOST,
+@@ -2549,7 +2549,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_write(fsg);
+ break;
+
+- case SC_WRITE_10:
++ case WRITE_10:
+ fsg->data_size_from_cmnd =
+ get_unaligned_be16(&fsg->cmnd[7]) << 9;
+ if ((reply = check_command(fsg, 10, DATA_DIR_FROM_HOST,
+@@ -2558,7 +2558,7 @@ static int do_scsi_command(struct fsg_de
+ reply = do_write(fsg);
+ break;
+
+- case SC_WRITE_12:
++ case WRITE_12:
+ fsg->data_size_from_cmnd =
+ get_unaligned_be32(&fsg->cmnd[6]) << 9;
+ if ((reply = check_command(fsg, 12, DATA_DIR_FROM_HOST,
+@@ -2571,10 +2571,10 @@ static int do_scsi_command(struct fsg_de
+ * They don't mean much in this setting. It's left as an exercise
+ * for anyone interested to implement RESERVE and RELEASE in terms
+ * of Posix locks. */
+- case SC_FORMAT_UNIT:
+- case SC_RELEASE:
+- case SC_RESERVE:
+- case SC_SEND_DIAGNOSTIC:
++ case FORMAT_UNIT:
++ case RELEASE:
++ case RESERVE:
++ case SEND_DIAGNOSTIC:
+ // Fall through
+
+ default:
+--- a/drivers/usb/gadget/storage_common.c
++++ b/drivers/usb/gadget/storage_common.c
+@@ -53,8 +53,9 @@
+ */
+
+
+-#include <asm/unaligned.h>
+ #include <linux/usb/storage.h>
++#include <scsi/scsi.h>
++#include <asm/unaligned.h>
+
+
+ /*
+@@ -153,10 +154,6 @@
+
+ /*-------------------------------------------------------------------------*/
+
+-/* SCSI device types */
+-#define TYPE_DISK 0x00
+-#define TYPE_CDROM 0x05
+-
+ /* Bulk-only data structures */
+
+ /* Command Block Wrapper */
+@@ -208,33 +205,6 @@ struct interrupt_data {
+ /* Length of a SCSI Command Data Block */
+ #define MAX_COMMAND_SIZE 16
+
+-/* SCSI commands that we recognize */
+-#define SC_FORMAT_UNIT 0x04
+-#define SC_INQUIRY 0x12
+-#define SC_MODE_SELECT_6 0x15
+-#define SC_MODE_SELECT_10 0x55
+-#define SC_MODE_SENSE_6 0x1a
+-#define SC_MODE_SENSE_10 0x5a
+-#define SC_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
+-#define SC_READ_6 0x08
+-#define SC_READ_10 0x28
+-#define SC_READ_12 0xa8
+-#define SC_READ_CAPACITY 0x25
+-#define SC_READ_FORMAT_CAPACITIES 0x23
+-#define SC_READ_HEADER 0x44
+-#define SC_READ_TOC 0x43
+-#define SC_RELEASE 0x17
+-#define SC_REQUEST_SENSE 0x03
+-#define SC_RESERVE 0x16
+-#define SC_SEND_DIAGNOSTIC 0x1d
+-#define SC_START_STOP_UNIT 0x1b
+-#define SC_SYNCHRONIZE_CACHE 0x35
+-#define SC_TEST_UNIT_READY 0x00
+-#define SC_VERIFY 0x2f
+-#define SC_WRITE_6 0x0a
+-#define SC_WRITE_10 0x2a
+-#define SC_WRITE_12 0xaa
+-
+ /* SCSI Sense Key/Additional Sense Code/ASC Qualifier values */
+ #define SS_NO_SENSE 0
+ #define SS_COMMUNICATION_FAILURE 0x040800
+--- a/include/scsi/scsi.h
++++ b/include/scsi/scsi.h
+@@ -67,6 +67,7 @@ struct scsi_cmnd;
+ #define SEND_DIAGNOSTIC 0x1d
+ #define ALLOW_MEDIUM_REMOVAL 0x1e
+
++#define READ_FORMAT_CAPACITIES 0x23
+ #define SET_WINDOW 0x24
+ #define READ_CAPACITY 0x25
+ #define READ_10 0x28
+@@ -96,6 +97,7 @@ struct scsi_cmnd;
+ #define WRITE_SAME 0x41
+ #define UNMAP 0x42
+ #define READ_TOC 0x43
++#define READ_HEADER 0x44
+ #define LOG_SELECT 0x4c
+ #define LOG_SENSE 0x4d
+ #define XDWRITEREAD_10 0x53