ChangeSet 1.1196.1.1, 2003/05/20 21:39:21-07:00, vojtech@suse.cz

[PATCH] USB: Make Olympus cameras work with usb-storage

According to Jan Derfinak, Olympus USB cameras mistakenly report an
'USBU' signature instead of 'USBS', while using the normal USB Storage
protocol.

The attached patches (again by Jan) fix this problem in 2.4 and 2.5.


 drivers/usb/storage/transport.c |    2 +-
 drivers/usb/storage/transport.h |    2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)


diff -Nru a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
--- a/drivers/usb/storage/transport.c	Fri May 23 14:27:01 2003
+++ b/drivers/usb/storage/transport.c	Fri May 23 14:27:01 2003
@@ -988,7 +988,7 @@
 	US_DEBUGP("Bulk status Sig 0x%x T 0x%x R %d Stat 0x%x\n",
 		  le32_to_cpu(bcs.Signature), bcs.Tag, 
 		  bcs.Residue, bcs.Status);
-	if (bcs.Signature != cpu_to_le32(US_BULK_CS_SIGN) || 
+	if ((bcs.Signature != cpu_to_le32(US_BULK_CS_SIGN) && bcs.Signature != cpu_to_le32(US_BULK_CS_OLYMPUS_SIGN)) || 
 	    bcs.Tag != bcb.Tag || 
 	    bcs.Status > US_BULK_STAT_PHASE) {
 		US_DEBUGP("Bulk logical error\n");
diff -Nru a/drivers/usb/storage/transport.h b/drivers/usb/storage/transport.h
--- a/drivers/usb/storage/transport.h	Fri May 23 14:27:01 2003
+++ b/drivers/usb/storage/transport.h	Fri May 23 14:27:01 2003
@@ -105,6 +105,8 @@
 
 #define US_BULK_CS_WRAP_LEN	13
 #define US_BULK_CS_SIGN		0x53425355	/* spells out 'USBS' */
+/* This is for Olympus Camedia digital cameras */
+#define US_BULK_CS_OLYMPUS_SIGN		0x55425355	/* spells out 'USBU' */
 #define US_BULK_STAT_OK		0
 #define US_BULK_STAT_FAIL	1
 #define US_BULK_STAT_PHASE	2
