diff options
| -rw-r--r-- | drivers/usb/storage/scsiglue.c | 4 | ||||
| -rw-r--r-- | drivers/usb/storage/unusual_devs.h | 3 | ||||
| -rw-r--r-- | include/linux/usb_usual.h | 4 | 
3 files changed, 9 insertions, 2 deletions
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index a1128ff5cc2..a688b1e686e 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c @@ -209,6 +209,10 @@ static int slave_configure(struct scsi_device *sdev)  		if (us->fflags & US_FL_CAPACITY_HEURISTICS)  			sdev->guess_capacity = 1; +		/* Some devices cannot handle READ_CAPACITY_16 */ +		if (us->fflags & US_FL_NO_READ_CAPACITY_16) +			sdev->no_read_capacity_16 = 1; +  		/* assume SPC3 or latter devices support sense size > 18 */  		if (sdev->scsi_level > SCSI_SPC_2)  			us->fflags |= US_FL_SANE_SENSE; diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index c8264ff5457..6ccdd3dd525 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h @@ -877,7 +877,8 @@ UNUSUAL_DEV(  0x071b, 0x3203, 0x0000, 0x0000,  		"RockChip",  		"MP3",  		USB_SC_DEVICE, USB_PR_DEVICE, NULL, -		US_FL_NO_WP_DETECT | US_FL_MAX_SECTORS_64), +		US_FL_NO_WP_DETECT | US_FL_MAX_SECTORS_64 | +		US_FL_NO_READ_CAPACITY_16),  /* Reported by Jean-Baptiste Onofre <jb@nanthrax.net>   * Support the following product : diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h index e62e9fe0888..71693d4a4fe 100644 --- a/include/linux/usb_usual.h +++ b/include/linux/usb_usual.h @@ -60,7 +60,9 @@  	US_FLAG(BAD_SENSE,	0x00020000)			\  		/* Bad Sense (never more than 18 bytes) */	\  	US_FLAG(NO_READ_DISC_INFO,	0x00040000)		\ -		/* cannot handle READ_DISC_INFO */ +		/* cannot handle READ_DISC_INFO */		\ +	US_FLAG(NO_READ_CAPACITY_16,	0x00080000)		\ +		/* cannot handle READ_CAPACITY_16 */  #define US_FLAG(name, value)	US_FL_##name = value ,  enum { US_DO_ALL_FLAGS };  |