ChangeSet 1.1608.24.9, 2004/02/26 14:18:20-08:00, mdharm-usb@one-eyed-alien.net

[PATCH] USB Storage: Fix for Fuji Finepix 1400

This patch changes some error checking so that some bogus devices (like the
Fuji Finepix 1400) will work.

This is basically relaxing a test on a field that the spec says "should
always be zero"


 drivers/usb/storage/transport.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)


diff -Nru a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
--- a/drivers/usb/storage/transport.c	Tue Mar 16 15:06:37 2004
+++ b/drivers/usb/storage/transport.c	Tue Mar 16 15:06:37 2004
@@ -809,15 +809,19 @@
 	}
 
 	/* If not UFI, we interpret the data as a result code 
-	 * The first byte should always be a 0x0
-	 * The second byte & 0x0F should be 0x0 for good, otherwise error 
+	 * The first byte should always be a 0x0.
+	 *
+	 * Some bogus devices don't follow that rule.  They stuff the ASC
+	 * into the first byte -- so if it's non-zero, call it a failure.
 	 */
 	if (us->iobuf[0]) {
-		US_DEBUGP("CBI IRQ data showed reserved bType %d\n",
+		US_DEBUGP("CBI IRQ data showed reserved bType 0x%x\n",
 				us->iobuf[0]);
-		return USB_STOR_TRANSPORT_ERROR;
+		goto Failed;
+
 	}
 
+	/* The second byte & 0x0F should be 0x0 for good, otherwise error */
 	switch (us->iobuf[1] & 0x0F) {
 		case 0x00: 
 			return USB_STOR_TRANSPORT_GOOD;
