aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2010-10-01 17:20:10 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-22 13:22:04 -0400
commitae38c78a03e1b77ad45248fcf097e4568e740209 (patch)
treef751122a6ec59825793f7786cec15f76a89c905f
parent8e04d8056c1ea0e0aab730994b74756f0526cda8 (diff)
usb-storage: add new no_read_disc_info quirk
Appotech ax3003 (the larger brother of the ax203) based devices are even more buggy then the ax203. They will go of into lala land when ever they see a READ_DISC_INFO scsi command. So add a new US_FL which tells the scsi sr driver to not issue any READ_DISC_INFO scsi commands. [akpm@linux-foundation.org: fix build] Signed-off-by: Hans de Goede <hdegoede@redhat.com> Cc: James Bottomley <James.Bottomley@HansenPartnership.com> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/storage/scsiglue.c4
-rw-r--r--drivers/usb/storage/unusual_devs.h5
-rw-r--r--include/linux/usb_usual.h4
3 files changed, 12 insertions, 1 deletions
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index e80362d148f3..a1128ff5cc2c 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -253,6 +253,10 @@ static int slave_configure(struct scsi_device *sdev)
253 * or to force 192-byte transfer lengths for MODE SENSE. 253 * or to force 192-byte transfer lengths for MODE SENSE.
254 * But they do need to use MODE SENSE(10). */ 254 * But they do need to use MODE SENSE(10). */
255 sdev->use_10_for_ms = 1; 255 sdev->use_10_for_ms = 1;
256
257 /* Some (fake) usb cdrom devices don't like READ_DISC_INFO */
258 if (us->fflags & US_FL_NO_READ_DISC_INFO)
259 sdev->no_read_disc_info = 1;
256 } 260 }
257 261
258 /* The CB and CBI transports have no way to pass LUN values 262 /* The CB and CBI transports have no way to pass LUN values
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index f43314a22ba4..c8264ff5457e 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -1858,6 +1858,11 @@ UNUSUAL_DEV( 0x1908, 0x1320, 0x0000, 0x0000,
1858 "Photo Frame", 1858 "Photo Frame",
1859 USB_SC_DEVICE, USB_PR_DEVICE, NULL, 1859 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1860 US_FL_BAD_SENSE ), 1860 US_FL_BAD_SENSE ),
1861UNUSUAL_DEV( 0x1908, 0x3335, 0x0200, 0x0200,
1862 "BUILDWIN",
1863 "Photo Frame",
1864 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1865 US_FL_NO_READ_DISC_INFO ),
1861 1866
1862UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001, 1867UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001,
1863 "ST", 1868 "ST",
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h
index f091dc6e5a00..e62e9fe08883 100644
--- a/include/linux/usb_usual.h
+++ b/include/linux/usb_usual.h
@@ -58,7 +58,9 @@
58 US_FLAG(CAPACITY_OK, 0x00010000) \ 58 US_FLAG(CAPACITY_OK, 0x00010000) \
59 /* READ CAPACITY response is correct */ \ 59 /* READ CAPACITY response is correct */ \
60 US_FLAG(BAD_SENSE, 0x00020000) \ 60 US_FLAG(BAD_SENSE, 0x00020000) \
61 /* Bad Sense (never more than 18 bytes) */ 61 /* Bad Sense (never more than 18 bytes) */ \
62 US_FLAG(NO_READ_DISC_INFO, 0x00040000) \
63 /* cannot handle READ_DISC_INFO */
62 64
63#define US_FLAG(name, value) US_FL_##name = value , 65#define US_FLAG(name, value) US_FL_##name = value ,
64enum { US_DO_ALL_FLAGS }; 66enum { US_DO_ALL_FLAGS };