diff options
author | Daniel Drake <dsd@gentoo.org> | 2005-09-29 00:14:21 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-10-28 16:47:43 -0700 |
commit | a8798533c1f876b97566588cf2bf52458cb4a35d (patch) | |
tree | 076e498708a5efeb3e9234facb86ed15bc5a2dd0 | |
parent | d40ece1dc8dcc89ab921755cbc93a5cfb46d0766 (diff) | |
download | kernel-crypto-a8798533c1f876b97566588cf2bf52458cb4a35d.tar.gz kernel-crypto-a8798533c1f876b97566588cf2bf52458cb4a35d.tar.xz kernel-crypto-a8798533c1f876b97566588cf2bf52458cb4a35d.zip |
[PATCH] USB Storage: HP8200: Another device type detection fix
There appears to be one more case where the HP8200 CD writer devices are
detected as flash readers - when the USB cable is replugged after use, with
the power cable still connected.
Oddly enough, the identify device command appears to 'fall through' when the
devices are in this state, the status register reading exactly the same opcode
as the command (0xA1) that was just executed.
I think it's safe to label this behaviour as specific to HP8200 devices, I
can't get the flash devices to respond like this.
This patch should solve the last of the HP8200 issues which have cropped up
recently.
Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/storage/shuttle_usbat.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
-rw-r--r-- | drivers/usb/storage/shuttle_usbat.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c index 356342c6e7a..bd448d6c318 100644 --- a/drivers/usb/storage/shuttle_usbat.c +++ b/drivers/usb/storage/shuttle_usbat.c @@ -855,15 +855,15 @@ static int usbat_identify_device(struct us_data *us, if (rc != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; - // Check for error bit - if (status & 0x01) { - // Device is a CompactFlash reader/writer - US_DEBUGP("usbat_identify_device: Detected Flash reader/writer\n"); - info->devicetype = USBAT_DEV_FLASH; - } else { + // Check for error bit, or if the command 'fell through' + if (status == 0xA1 || !(status & 0x01)) { // Device is HP 8200 US_DEBUGP("usbat_identify_device: Detected HP8200 CDRW\n"); info->devicetype = USBAT_DEV_HP8200; + } else { + // Device is a CompactFlash reader/writer + US_DEBUGP("usbat_identify_device: Detected Flash reader/writer\n"); + info->devicetype = USBAT_DEV_FLASH; } return USB_STOR_TRANSPORT_GOOD; |