diff options
author | Hans de Goede <hdegoede@redhat.com> | 2010-10-01 17:20:10 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:22:04 -0400 |
commit | ae38c78a03e1b77ad45248fcf097e4568e740209 (patch) | |
tree | f751122a6ec59825793f7786cec15f76a89c905f | |
parent | 8e04d8056c1ea0e0aab730994b74756f0526cda8 (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.c | 4 | ||||
-rw-r--r-- | drivers/usb/storage/unusual_devs.h | 5 | ||||
-rw-r--r-- | include/linux/usb_usual.h | 4 |
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 ), |
1861 | UNUSUAL_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 | ||
1862 | UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001, | 1867 | UNUSUAL_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 , |
64 | enum { US_DO_ALL_FLAGS }; | 66 | enum { US_DO_ALL_FLAGS }; |