aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2008-12-01 10:36:15 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2009-01-07 13:00:06 -0500
commitc20b15fde50c32174af4b48851e5ddadba36330e (patch)
tree1a06cf7037f9b1c5290e9c754881c11bc2966947 /drivers
parentf1632df36b9467b75b7abfd2799aef67ec74a60a (diff)
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/storage/Kconfig11
-rw-r--r--drivers/usb/storage/Makefile1
-rw-r--r--drivers/usb/storage/dpcm.c86
-rw-r--r--drivers/usb/storage/dpcm.h32
-rw-r--r--drivers/usb/storage/sddr09.c43
-rw-r--r--drivers/usb/storage/sddr09.h5
-rw-r--r--drivers/usb/storage/unusual_devs.h22
-rw-r--r--drivers/usb/storage/usb.c3
8 files changed, 69 insertions, 134 deletions
diff --git a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig
index c68b738900bd..9df6887b91f6 100644
--- a/drivers/usb/storage/Kconfig
+++ b/drivers/usb/storage/Kconfig
@@ -61,13 +61,6 @@ config USB_STORAGE_ISD200
61 - CyQ've CQ8060A CDRW drive 61 - CyQ've CQ8060A CDRW drive
62 - Planex eXtreme Drive RX-25HU USB-IDE cable (not model RX-25U) 62 - Planex eXtreme Drive RX-25HU USB-IDE cable (not model RX-25U)
63 63
64config USB_STORAGE_DPCM
65 bool "Microtech/ZiO! CompactFlash/SmartMedia support"
66 depends on USB_STORAGE
67 help
68 Say Y here to support the Microtech/ZiO! CompactFlash reader.
69 There is a web page at <http://www.ziocorp.com/products/>.
70
71config USB_STORAGE_USBAT 64config USB_STORAGE_USBAT
72 bool "USBAT/USBAT02-based storage support" 65 bool "USBAT/USBAT02-based storage support"
73 depends on USB_STORAGE 66 depends on USB_STORAGE
@@ -90,12 +83,12 @@ config USB_STORAGE_USBAT
90 - Sandisk ImageMate SDDR-05b 83 - Sandisk ImageMate SDDR-05b
91 84
92config USB_STORAGE_SDDR09 85config USB_STORAGE_SDDR09
93 bool "SanDisk SDDR-09 (and other SmartMedia) support" 86 bool "SanDisk SDDR-09 (and other SmartMedia, including DPCM) support"
94 depends on USB_STORAGE 87 depends on USB_STORAGE
95 help 88 help
96 Say Y here to include additional code to support the Sandisk SDDR-09 89 Say Y here to include additional code to support the Sandisk SDDR-09
97 SmartMedia reader in the USB Mass Storage driver. 90 SmartMedia reader in the USB Mass Storage driver.
98 Also works for the Microtech Zio! SmartMedia reader. 91 Also works for the Microtech Zio! CompactFlash/SmartMedia reader.
99 92
100config USB_STORAGE_SDDR55 93config USB_STORAGE_SDDR55
101 bool "SanDisk SDDR-55 SmartMedia support" 94 bool "SanDisk SDDR-55 SmartMedia support"
diff --git a/drivers/usb/storage/Makefile b/drivers/usb/storage/Makefile
index 7f8beb5366ae..facf610f1683 100644
--- a/drivers/usb/storage/Makefile
+++ b/drivers/usb/storage/Makefile
@@ -14,7 +14,6 @@ usb-storage-obj-$(CONFIG_USB_STORAGE_USBAT) += shuttle_usbat.o
14usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR09) += sddr09.o 14usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR09) += sddr09.o
15usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR55) += sddr55.o 15usb-storage-obj-$(CONFIG_USB_STORAGE_SDDR55) += sddr55.o
16usb-storage-obj-$(CONFIG_USB_STORAGE_FREECOM) += freecom.o 16usb-storage-obj-$(CONFIG_USB_STORAGE_FREECOM) += freecom.o
17usb-storage-obj-$(CONFIG_USB_STORAGE_DPCM) += dpcm.o
18usb-storage-obj-$(CONFIG_USB_STORAGE_ISD200) += isd200.o 17usb-storage-obj-$(CONFIG_USB_STORAGE_ISD200) += isd200.o
19usb-storage-obj-$(CONFIG_USB_STORAGE_DATAFAB) += datafab.o 18usb-storage-obj-$(CONFIG_USB_STORAGE_DATAFAB) += datafab.o
20usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o 19usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o
diff --git a/drivers/usb/storage/dpcm.c b/drivers/usb/storage/dpcm.c
deleted file mode 100644
index 939923471af4..000000000000
--- a/drivers/usb/storage/dpcm.c
+++ /dev/null
@@ -1,86 +0,0 @@
1/* Driver for Microtech DPCM-USB CompactFlash/SmartMedia reader
2 *
3 * DPCM driver v0.1:
4 *
5 * First release
6 *
7 * Current development and maintenance by:
8 * (c) 2000 Brian Webb (webbb@earthlink.net)
9 *
10 * This device contains both a CompactFlash card reader, which
11 * uses the Control/Bulk w/o Interrupt protocol and
12 * a SmartMedia card reader that uses the same protocol
13 * as the SDDR09.
14 *
15 * This program is free software; you can redistribute it and/or modify it
16 * under the terms of the GNU General Public License as published by the
17 * Free Software Foundation; either version 2, or (at your option) any
18 * later version.
19 *
20 * This program is distributed in the hope that it will be useful, but
21 * WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License along
26 * with this program; if not, write to the Free Software Foundation, Inc.,
27 * 675 Mass Ave, Cambridge, MA 02139, USA.
28 */
29
30#include <scsi/scsi.h>
31#include <scsi/scsi_cmnd.h>
32#include <scsi/scsi_device.h>
33
34#include "usb.h"
35#include "transport.h"
36#include "protocol.h"
37#include "debug.h"
38#include "dpcm.h"
39#include "sddr09.h"
40
41/*
42 * Transport for the Microtech DPCM-USB
43 *
44 */
45int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
46{
47 int ret;
48
49 if (srb == NULL)
50 return USB_STOR_TRANSPORT_ERROR;
51
52 US_DEBUGP("dpcm_transport: LUN=%d\n", srb->device->lun);
53
54 switch (srb->device->lun) {
55 case 0:
56
57 /*
58 * LUN 0 corresponds to the CompactFlash card reader.
59 */
60 ret = usb_stor_CB_transport(srb, us);
61 break;
62
63#ifdef CONFIG_USB_STORAGE_SDDR09
64 case 1:
65
66 /*
67 * LUN 1 corresponds to the SmartMedia card reader.
68 */
69
70 /*
71 * Set the LUN to 0 (just in case).
72 */
73 srb->device->lun = 0; us->srb->device->lun = 0;
74 ret = sddr09_transport(srb, us);
75 srb->device->lun = 1; us->srb->device->lun = 1;
76 break;
77
78#endif
79
80 default:
81 US_DEBUGP("dpcm_transport: Invalid LUN %d\n", srb->device->lun);
82 ret = USB_STOR_TRANSPORT_ERROR;
83 break;
84 }
85 return ret;
86}
diff --git a/drivers/usb/storage/dpcm.h b/drivers/usb/storage/dpcm.h
deleted file mode 100644
index e7b7b0f120d7..000000000000
--- a/drivers/usb/storage/dpcm.h
+++ /dev/null
@@ -1,32 +0,0 @@
1/* Driver for Microtech DPCM-USB CompactFlash/SmartMedia reader
2 *
3 * DPCM driver v0.1:
4 *
5 * First release
6 *
7 * Current development and maintenance by:
8 * (c) 2000 Brian Webb (webbb@earthlink.net)
9 *
10 * See dpcm.c for more explanation
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2, or (at your option) any
15 * later version.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along
23 * with this program; if not, write to the Free Software Foundation, Inc.,
24 * 675 Mass Ave, Cambridge, MA 02139, USA.
25 */
26
27#ifndef _MICROTECH_DPCM_USB_H
28#define _MICROTECH_DPCM_USB_H
29
30extern int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us);
31
32#endif
diff --git a/drivers/usb/storage/sddr09.c b/drivers/usb/storage/sddr09.c
index c5a54b872c24..531ae5c5abf3 100644
--- a/drivers/usb/storage/sddr09.c
+++ b/drivers/usb/storage/sddr09.c
@@ -45,6 +45,7 @@
45 45
46#include <scsi/scsi.h> 46#include <scsi/scsi.h>
47#include <scsi/scsi_cmnd.h> 47#include <scsi/scsi_cmnd.h>
48#include <scsi/scsi_device.h>
48 49
49#include "usb.h" 50#include "usb.h"
50#include "transport.h" 51#include "transport.h"
@@ -1446,6 +1447,48 @@ usb_stor_sddr09_dpcm_init(struct us_data *us) {
1446} 1447}
1447 1448
1448/* 1449/*
1450 * Transport for the Microtech DPCM-USB
1451 */
1452int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
1453{
1454 int ret;
1455
1456 US_DEBUGP("dpcm_transport: LUN=%d\n", srb->device->lun);
1457
1458 switch (srb->device->lun) {
1459 case 0:
1460
1461 /*
1462 * LUN 0 corresponds to the CompactFlash card reader.
1463 */
1464 ret = usb_stor_CB_transport(srb, us);
1465 break;
1466
1467 case 1:
1468
1469 /*
1470 * LUN 1 corresponds to the SmartMedia card reader.
1471 */
1472
1473 /*
1474 * Set the LUN to 0 (just in case).
1475 */
1476 srb->device->lun = 0;
1477 ret = sddr09_transport(srb, us);
1478 srb->device->lun = 1;
1479 break;
1480
1481 default:
1482 US_DEBUGP("dpcm_transport: Invalid LUN %d\n",
1483 srb->device->lun);
1484 ret = USB_STOR_TRANSPORT_ERROR;
1485 break;
1486 }
1487 return ret;
1488}
1489
1490
1491/*
1449 * Transport for the Sandisk SDDR-09 1492 * Transport for the Sandisk SDDR-09
1450 */ 1493 */
1451int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) 1494int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us)
diff --git a/drivers/usb/storage/sddr09.h b/drivers/usb/storage/sddr09.h
index e50033ad7b19..b701172e12e3 100644
--- a/drivers/usb/storage/sddr09.h
+++ b/drivers/usb/storage/sddr09.h
@@ -28,8 +28,11 @@
28/* Sandisk SDDR-09 stuff */ 28/* Sandisk SDDR-09 stuff */
29 29
30extern int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us); 30extern int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us);
31extern int usb_stor_sddr09_init(struct us_data *us);
32
33/* Microtech DPCM-USB stuff */
31 34
35extern int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us);
32extern int usb_stor_sddr09_dpcm_init(struct us_data *us); 36extern int usb_stor_sddr09_dpcm_init(struct us_data *us);
33extern int usb_stor_sddr09_init(struct us_data *us);
34 37
35#endif 38#endif
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 745809778310..0fd42a0c794f 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -296,11 +296,17 @@ UNUSUAL_DEV( 0x0424, 0x0fdc, 0x0210, 0x0210,
296 US_SC_DEVICE, US_PR_DEVICE, NULL, 296 US_SC_DEVICE, US_PR_DEVICE, NULL,
297 US_FL_SINGLE_LUN ), 297 US_FL_SINGLE_LUN ),
298 298
299#ifdef CONFIG_USB_STORAGE_DPCM 299#ifdef CONFIG_USB_STORAGE_SDDR09
300UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100, 300UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100,
301 "Microtech", 301 "Microtech",
302 "CameraMate (DPCM_USB)", 302 "CameraMate (DPCM_USB)",
303 US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ), 303 US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ),
304#else
305UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100,
306 "Microtech",
307 "CameraMate",
308 US_SC_SCSI, US_PR_CB, NULL,
309 US_FL_SINGLE_LUN ),
304#endif 310#endif
305 311
306/* Patch submitted by Daniel Drake <dsd@gentoo.org> 312/* Patch submitted by Daniel Drake <dsd@gentoo.org>
@@ -601,6 +607,12 @@ UNUSUAL_DEV( 0x04e6, 0x0005, 0x0100, 0x0208,
601 "eUSB SmartMedia / CompactFlash Adapter", 607 "eUSB SmartMedia / CompactFlash Adapter",
602 US_SC_SCSI, US_PR_DPCM_USB, usb_stor_sddr09_dpcm_init, 608 US_SC_SCSI, US_PR_DPCM_USB, usb_stor_sddr09_dpcm_init,
603 0), 609 0),
610#else
611UNUSUAL_DEV( 0x04e6, 0x0005, 0x0100, 0x0208,
612 "SCM Microsystems",
613 "eUSB CompactFlash Adapter",
614 US_SC_SCSI, US_PR_CB, NULL,
615 US_FL_SINGLE_LUN),
604#endif 616#endif
605 617
606/* Reported by Markus Demleitner <msdemlei@cl.uni-heidelberg.de> */ 618/* Reported by Markus Demleitner <msdemlei@cl.uni-heidelberg.de> */
@@ -1175,11 +1187,17 @@ UNUSUAL_DEV( 0x07af, 0x0005, 0x0100, 0x0100,
1175 US_SC_DEVICE, US_PR_DEVICE, usb_stor_euscsi_init, 1187 US_SC_DEVICE, US_PR_DEVICE, usb_stor_euscsi_init,
1176 US_FL_SCM_MULT_TARG ), 1188 US_FL_SCM_MULT_TARG ),
1177 1189
1178#ifdef CONFIG_USB_STORAGE_DPCM 1190#ifdef CONFIG_USB_STORAGE_SDDR09
1179UNUSUAL_DEV( 0x07af, 0x0006, 0x0100, 0x0100, 1191UNUSUAL_DEV( 0x07af, 0x0006, 0x0100, 0x0100,
1180 "Microtech", 1192 "Microtech",
1181 "CameraMate (DPCM_USB)", 1193 "CameraMate (DPCM_USB)",
1182 US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ), 1194 US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ),
1195#else
1196UNUSUAL_DEV( 0x07af, 0x0006, 0x0100, 0x0100,
1197 "Microtech",
1198 "CameraMate",
1199 US_SC_SCSI, US_PR_CB, NULL,
1200 US_FL_SINGLE_LUN ),
1183#endif 1201#endif
1184 1202
1185#ifdef CONFIG_USB_STORAGE_ALAUDA 1203#ifdef CONFIG_USB_STORAGE_ALAUDA
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 06c735703f4a..b25c448d5eb7 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -75,9 +75,6 @@
75#ifdef CONFIG_USB_STORAGE_SDDR55 75#ifdef CONFIG_USB_STORAGE_SDDR55
76#include "sddr55.h" 76#include "sddr55.h"
77#endif 77#endif
78#ifdef CONFIG_USB_STORAGE_DPCM
79#include "dpcm.h"
80#endif
81#ifdef CONFIG_USB_STORAGE_FREECOM 78#ifdef CONFIG_USB_STORAGE_FREECOM
82#include "freecom.h" 79#include "freecom.h"
83#endif 80#endif