Skip to content

Commit

Permalink
USB: usb-storage: merge DPCM support into SDDR09
Browse files Browse the repository at this point in the history
The DPCM subdriver is a little peculiar, in that it's meant to support
devices where LUN 0 is Compact Flash and uses the CB transport whereas
LUN 1 is SmartMedia and uses the SDDR09 transport.  Thus DPCM isn't
really a transport in itself; it's more like a demultiplexer.

Much of the DPCM code is part of the SDDR09 subdriver already, and the
remaining part is fairly small.  This patch (as1182) moves that extra
piece into sddr09.c, thereby eliminating dpcm.c.  Also eliminated is
the Kconfig entry for DPCM support; it is now listed as part of the
SDDR09 entry.

In order to make sure that the semantics are the same as before, each
unusual_devs entry for DPCM is now present twice: once with DPCM
support if SDDR09 is configured (as before), and once with the
SINGLE_LUN flag and CB support otherwise.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Jan 7, 2009
1 parent f1632df commit c20b15f
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 134 deletions.
11 changes: 2 additions & 9 deletions drivers/usb/storage/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,6 @@ config USB_STORAGE_ISD200
- CyQ've CQ8060A CDRW drive
- Planex eXtreme Drive RX-25HU USB-IDE cable (not model RX-25U)

config USB_STORAGE_DPCM
bool "Microtech/ZiO! CompactFlash/SmartMedia support"
depends on USB_STORAGE
help
Say Y here to support the Microtech/ZiO! CompactFlash reader.
There is a web page at <http://www.ziocorp.com/products/>.

config USB_STORAGE_USBAT
bool "USBAT/USBAT02-based storage support"
depends on USB_STORAGE
Expand All @@ -90,12 +83,12 @@ config USB_STORAGE_USBAT
- Sandisk ImageMate SDDR-05b

config USB_STORAGE_SDDR09
bool "SanDisk SDDR-09 (and other SmartMedia) support"
bool "SanDisk SDDR-09 (and other SmartMedia, including DPCM) support"
depends on USB_STORAGE
help
Say Y here to include additional code to support the Sandisk SDDR-09
SmartMedia reader in the USB Mass Storage driver.
Also works for the Microtech Zio! SmartMedia reader.
Also works for the Microtech Zio! CompactFlash/SmartMedia reader.

config USB_STORAGE_SDDR55
bool "SanDisk SDDR-55 SmartMedia support"
Expand Down
1 change: 0 additions & 1 deletion drivers/usb/storage/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ usb-storage-obj-$(CONFIG_USB_STORAGE_USBAT) += shuttle_usbat.o
usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR09) += sddr09.o
usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR55) += sddr55.o
usb-storage-obj-$(CONFIG_USB_STORAGE_FREECOM) += freecom.o
usb-storage-obj-$(CONFIG_USB_STORAGE_DPCM) += dpcm.o
usb-storage-obj-$(CONFIG_USB_STORAGE_ISD200) += isd200.o
usb-storage-obj-$(CONFIG_USB_STORAGE_DATAFAB) += datafab.o
usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o
Expand Down
86 changes: 0 additions & 86 deletions drivers/usb/storage/dpcm.c

This file was deleted.

32 changes: 0 additions & 32 deletions drivers/usb/storage/dpcm.h

This file was deleted.

43 changes: 43 additions & 0 deletions drivers/usb/storage/sddr09.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@

#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>

#include "usb.h"
#include "transport.h"
Expand Down Expand Up @@ -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
*/
Expand Down
5 changes: 4 additions & 1 deletion drivers/usb/storage/sddr09.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@
/* Sandisk SDDR-09 stuff */

extern int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us);
extern int usb_stor_sddr09_init(struct us_data *us);

/* Microtech DPCM-USB stuff */

extern int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us);
extern int usb_stor_sddr09_dpcm_init(struct us_data *us);
extern int usb_stor_sddr09_init(struct us_data *us);

#endif
22 changes: 20 additions & 2 deletions drivers/usb/storage/unusual_devs.h
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,17 @@ UNUSUAL_DEV( 0x0424, 0x0fdc, 0x0210, 0x0210,
US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_SINGLE_LUN ),

#ifdef CONFIG_USB_STORAGE_DPCM
#ifdef CONFIG_USB_STORAGE_SDDR09
UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100,
"Microtech",
"CameraMate (DPCM_USB)",
US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ),
#else
UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100,
"Microtech",
"CameraMate",
US_SC_SCSI, US_PR_CB, NULL,
US_FL_SINGLE_LUN ),
#endif

/* Patch submitted by Daniel Drake <dsd@gentoo.org>
Expand Down Expand Up @@ -601,6 +607,12 @@ UNUSUAL_DEV( 0x04e6, 0x0005, 0x0100, 0x0208,
"eUSB SmartMedia / CompactFlash Adapter",
US_SC_SCSI, US_PR_DPCM_USB, usb_stor_sddr09_dpcm_init,
0),
#else
UNUSUAL_DEV( 0x04e6, 0x0005, 0x0100, 0x0208,
"SCM Microsystems",
"eUSB CompactFlash Adapter",
US_SC_SCSI, US_PR_CB, NULL,
US_FL_SINGLE_LUN),
#endif

/* Reported by Markus Demleitner <msdemlei@cl.uni-heidelberg.de> */
Expand Down Expand Up @@ -1175,11 +1187,17 @@ UNUSUAL_DEV( 0x07af, 0x0005, 0x0100, 0x0100,
US_SC_DEVICE, US_PR_DEVICE, usb_stor_euscsi_init,
US_FL_SCM_MULT_TARG ),

#ifdef CONFIG_USB_STORAGE_DPCM
#ifdef CONFIG_USB_STORAGE_SDDR09
UNUSUAL_DEV( 0x07af, 0x0006, 0x0100, 0x0100,
"Microtech",
"CameraMate (DPCM_USB)",
US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ),
#else
UNUSUAL_DEV( 0x07af, 0x0006, 0x0100, 0x0100,
"Microtech",
"CameraMate",
US_SC_SCSI, US_PR_CB, NULL,
US_FL_SINGLE_LUN ),
#endif

#ifdef CONFIG_USB_STORAGE_ALAUDA
Expand Down
3 changes: 0 additions & 3 deletions drivers/usb/storage/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,6 @@
#ifdef CONFIG_USB_STORAGE_SDDR55
#include "sddr55.h"
#endif
#ifdef CONFIG_USB_STORAGE_DPCM
#include "dpcm.h"
#endif
#ifdef CONFIG_USB_STORAGE_FREECOM
#include "freecom.h"
#endif
Expand Down

0 comments on commit c20b15f

Please sign in to comment.