]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/storage/sddr09.c
USB: usb-storage: merge DPCM support into SDDR09
[linux-2.6-omap-h63xx.git] / drivers / usb / storage / sddr09.c
index c5a54b872c2426cae14927264558eb99f17987d6..531ae5c5abf3bf5d9d97abaac36c371ae82bb766 100644 (file)
@@ -45,6 +45,7 @@
 
 #include <scsi/scsi.h>
 #include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
 
 #include "usb.h"
 #include "transport.h"
@@ -1445,6 +1446,48 @@ usb_stor_sddr09_dpcm_init(struct us_data *us) {
        return 0;               /* not result */
 }
 
+/*
+ * Transport for the Microtech DPCM-USB
+ */
+int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
+{
+       int ret;
+
+       US_DEBUGP("dpcm_transport: LUN=%d\n", srb->device->lun);
+
+       switch (srb->device->lun) {
+       case 0:
+
+               /*
+                * LUN 0 corresponds to the CompactFlash card reader.
+                */
+               ret = usb_stor_CB_transport(srb, us);
+               break;
+
+       case 1:
+
+               /*
+                * LUN 1 corresponds to the SmartMedia card reader.
+                */
+
+               /*
+                * Set the LUN to 0 (just in case).
+                */
+               srb->device->lun = 0;
+               ret = sddr09_transport(srb, us);
+               srb->device->lun = 1;
+               break;
+
+       default:
+               US_DEBUGP("dpcm_transport: Invalid LUN %d\n",
+                               srb->device->lun);
+               ret = USB_STOR_TRANSPORT_ERROR;
+               break;
+       }
+       return ret;
+}
+
+
 /*
  * Transport for the Sandisk SDDR-09
  */