diff options
| -rw-r--r-- | drivers/usb/storage/scsiglue.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index a4b7df9ff8c1..e1072d52d641 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c | |||
| @@ -72,12 +72,27 @@ static const char* host_info(struct Scsi_Host *host) | |||
| 72 | 72 | ||
| 73 | static int slave_alloc (struct scsi_device *sdev) | 73 | static int slave_alloc (struct scsi_device *sdev) |
| 74 | { | 74 | { |
| 75 | struct us_data *us = host_to_us(sdev->host); | ||
| 76 | |||
| 75 | /* | 77 | /* |
| 76 | * Set the INQUIRY transfer length to 36. We don't use any of | 78 | * Set the INQUIRY transfer length to 36. We don't use any of |
| 77 | * the extra data and many devices choke if asked for more or | 79 | * the extra data and many devices choke if asked for more or |
| 78 | * less than 36 bytes. | 80 | * less than 36 bytes. |
| 79 | */ | 81 | */ |
| 80 | sdev->inquiry_len = 36; | 82 | sdev->inquiry_len = 36; |
| 83 | |||
| 84 | /* | ||
| 85 | * The UFI spec treates the Peripheral Qualifier bits in an | ||
| 86 | * INQUIRY result as reserved and requires devices to set them | ||
| 87 | * to 0. However the SCSI spec requires these bits to be set | ||
| 88 | * to 3 to indicate when a LUN is not present. | ||
| 89 | * | ||
| 90 | * Let the scanning code know if this target merely sets | ||
| 91 | * Peripheral Device Type to 0x1f to indicate no LUN. | ||
| 92 | */ | ||
| 93 | if (us->subclass == US_SC_UFI) | ||
| 94 | sdev->sdev_target->pdt_1f_for_no_lun = 1; | ||
| 95 | |||
| 81 | return 0; | 96 | return 0; |
| 82 | } | 97 | } |
| 83 | 98 | ||
