USB: usb-storage: merge DPCM support into SDDR09
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>
This commit is contained in:
parent
f1632df36b
commit
c20b15fde5
8 changed files with 70 additions and 135 deletions
|
@ -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
|
||||
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
/* Driver for Microtech DPCM-USB CompactFlash/SmartMedia reader
|
||||
*
|
||||
* DPCM driver v0.1:
|
||||
*
|
||||
* First release
|
||||
*
|
||||
* Current development and maintenance by:
|
||||
* (c) 2000 Brian Webb (webbb@earthlink.net)
|
||||
*
|
||||
* This device contains both a CompactFlash card reader, which
|
||||
* uses the Control/Bulk w/o Interrupt protocol and
|
||||
* a SmartMedia card reader that uses the same protocol
|
||||
* as the SDDR09.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
|
||||
#include "usb.h"
|
||||
#include "transport.h"
|
||||
#include "protocol.h"
|
||||
#include "debug.h"
|
||||
#include "dpcm.h"
|
||||
#include "sddr09.h"
|
||||
|
||||
/*
|
||||
* Transport for the Microtech DPCM-USB
|
||||
*
|
||||
*/
|
||||
int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (srb == NULL)
|
||||
return USB_STOR_TRANSPORT_ERROR;
|
||||
|
||||
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;
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_SDDR09
|
||||
case 1:
|
||||
|
||||
/*
|
||||
* LUN 1 corresponds to the SmartMedia card reader.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Set the LUN to 0 (just in case).
|
||||
*/
|
||||
srb->device->lun = 0; us->srb->device->lun = 0;
|
||||
ret = sddr09_transport(srb, us);
|
||||
srb->device->lun = 1; us->srb->device->lun = 1;
|
||||
break;
|
||||
|
||||
#endif
|
||||
|
||||
default:
|
||||
US_DEBUGP("dpcm_transport: Invalid LUN %d\n", srb->device->lun);
|
||||
ret = USB_STOR_TRANSPORT_ERROR;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
/* Driver for Microtech DPCM-USB CompactFlash/SmartMedia reader
|
||||
*
|
||||
* DPCM driver v0.1:
|
||||
*
|
||||
* First release
|
||||
*
|
||||
* Current development and maintenance by:
|
||||
* (c) 2000 Brian Webb (webbb@earthlink.net)
|
||||
*
|
||||
* See dpcm.c for more explanation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef _MICROTECH_DPCM_USB_H
|
||||
#define _MICROTECH_DPCM_USB_H
|
||||
|
||||
extern int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us);
|
||||
|
||||
#endif
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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_dpcm_init(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);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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>
|
||||
|
@ -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> */
|
||||
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue