[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 <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

 drivers/usb/storage/shuttle_usbat.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

---
commit a8798533c1f876b97566588cf2bf52458cb4a35d
tree 076e498708a5efeb3e9234facb86ed15bc5a2dd0
parent d40ece1dc8dcc89ab921755cbc93a5cfb46d0766
author Daniel Drake <[EMAIL PROTECTED]> Thu, 29 Sep 2005 00:14:21 +0100
committer Greg Kroah-Hartman <[EMAIL PROTECTED]> Fri, 28 Oct 2005 16:47:43 -0700

 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 356342c..bd448d6 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 
        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;



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to