aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/storage/cypress_atacb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/storage/cypress_atacb.c')
-rw-r--r--drivers/usb/storage/cypress_atacb.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/usb/storage/cypress_atacb.c b/drivers/usb/storage/cypress_atacb.c
index e4efc7bb833f..8514a2d82b72 100644
--- a/drivers/usb/storage/cypress_atacb.c
+++ b/drivers/usb/storage/cypress_atacb.c
@@ -248,14 +248,26 @@ static int cypress_probe(struct usb_interface *intf,
248{ 248{
249 struct us_data *us; 249 struct us_data *us;
250 int result; 250 int result;
251 struct usb_device *device;
251 252
252 result = usb_stor_probe1(&us, intf, id, 253 result = usb_stor_probe1(&us, intf, id,
253 (id - cypress_usb_ids) + cypress_unusual_dev_list); 254 (id - cypress_usb_ids) + cypress_unusual_dev_list);
254 if (result) 255 if (result)
255 return result; 256 return result;
256 257
257 us->protocol_name = "Transparent SCSI with Cypress ATACB"; 258 /* Among CY7C68300 chips, the A revision does not support Cypress ATACB
258 us->proto_handler = cypress_atacb_passthrough; 259 * Filter out this revision from EEPROM default descriptor values
260 */
261 device = interface_to_usbdev(intf);
262 if (device->descriptor.iManufacturer != 0x38 ||
263 device->descriptor.iProduct != 0x4e ||
264 device->descriptor.iSerialNumber != 0x64) {
265 us->protocol_name = "Transparent SCSI with Cypress ATACB";
266 us->proto_handler = cypress_atacb_passthrough;
267 } else {
268 us->protocol_name = "Transparent SCSI";
269 us->proto_handler = usb_stor_transparent_scsi_command;
270 }
259 271
260 result = usb_stor_probe2(us); 272 result = usb_stor_probe2(us);
261 return result; 273 return result;