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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8e04d8056c
commit
ae38c78a03
@@ -253,6 +253,10 @@ static int slave_configure(struct scsi_device *sdev)
|
|||||||
* or to force 192-byte transfer lengths for MODE SENSE.
|
* or to force 192-byte transfer lengths for MODE SENSE.
|
||||||
* But they do need to use MODE SENSE(10). */
|
* But they do need to use MODE SENSE(10). */
|
||||||
sdev->use_10_for_ms = 1;
|
sdev->use_10_for_ms = 1;
|
||||||
|
|
||||||
|
/* Some (fake) usb cdrom devices don't like READ_DISC_INFO */
|
||||||
|
if (us->fflags & US_FL_NO_READ_DISC_INFO)
|
||||||
|
sdev->no_read_disc_info = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The CB and CBI transports have no way to pass LUN values
|
/* The CB and CBI transports have no way to pass LUN values
|
||||||
|
@@ -1858,6 +1858,11 @@ UNUSUAL_DEV( 0x1908, 0x1320, 0x0000, 0x0000,
|
|||||||
"Photo Frame",
|
"Photo Frame",
|
||||||
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||||
US_FL_BAD_SENSE ),
|
US_FL_BAD_SENSE ),
|
||||||
|
UNUSUAL_DEV( 0x1908, 0x3335, 0x0200, 0x0200,
|
||||||
|
"BUILDWIN",
|
||||||
|
"Photo Frame",
|
||||||
|
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||||
|
US_FL_NO_READ_DISC_INFO ),
|
||||||
|
|
||||||
UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001,
|
UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001,
|
||||||
"ST",
|
"ST",
|
||||||
|
@@ -58,7 +58,9 @@
|
|||||||
US_FLAG(CAPACITY_OK, 0x00010000) \
|
US_FLAG(CAPACITY_OK, 0x00010000) \
|
||||||
/* READ CAPACITY response is correct */ \
|
/* READ CAPACITY response is correct */ \
|
||||||
US_FLAG(BAD_SENSE, 0x00020000) \
|
US_FLAG(BAD_SENSE, 0x00020000) \
|
||||||
/* Bad Sense (never more than 18 bytes) */
|
/* Bad Sense (never more than 18 bytes) */ \
|
||||||
|
US_FLAG(NO_READ_DISC_INFO, 0x00040000) \
|
||||||
|
/* cannot handle READ_DISC_INFO */
|
||||||
|
|
||||||
#define US_FLAG(name, value) US_FL_##name = value ,
|
#define US_FLAG(name, value) US_FL_##name = value ,
|
||||||
enum { US_DO_ALL_FLAGS };
|
enum { US_DO_ALL_FLAGS };
|
||||||
|
Reference in New Issue
Block a user