ChangeSet 1.1245, 2003/06/18 16:54:36-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.


 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	Wed Jun 18 17:35:16 2003
+++ b/drivers/usb/storage/transport.c	Wed Jun 18 17:35:16 2003
@@ -1250,7 +1250,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 || partial != 13) {
 		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	Wed Jun 18 17:35:16 2003
+++ b/drivers/usb/storage/transport.h	Wed Jun 18 17:35:16 2003
@@ -106,6 +106,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
