usb-storage: make jumpshot a separate module
This patch (as1214) converts usb-storage's jumpshot subdriver into a separate module. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
2cbbf3576a
commit
a9fb6d05d5
|
@ -110,12 +110,14 @@ config USB_STORAGE_SDDR55
|
|||
If this driver is compiled as a module, it will be named ums-sddr55.
|
||||
|
||||
config USB_STORAGE_JUMPSHOT
|
||||
bool "Lexar Jumpshot Compact Flash Reader"
|
||||
tristate "Lexar Jumpshot Compact Flash Reader"
|
||||
depends on USB_STORAGE
|
||||
help
|
||||
Say Y here to include additional code to support the Lexar Jumpshot
|
||||
USB CompactFlash reader.
|
||||
|
||||
If this driver is compiled as a module, it will be named ums-jumpshot.
|
||||
|
||||
config USB_STORAGE_ALAUDA
|
||||
bool "Olympus MAUSB-10/Fuji DPC-R1 support"
|
||||
depends on USB_STORAGE
|
||||
|
|
|
@ -10,7 +10,6 @@ EXTRA_CFLAGS := -Idrivers/scsi
|
|||
obj-$(CONFIG_USB_STORAGE) += usb-storage.o
|
||||
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_DEBUG) += debug.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_ALAUDA) += alauda.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_ONETOUCH) += onetouch.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_KARMA) += karma.o
|
||||
|
@ -28,6 +27,7 @@ obj-$(CONFIG_USB_STORAGE_CYPRESS_ATACB) += ums-cypress.o
|
|||
obj-$(CONFIG_USB_STORAGE_DATAFAB) += ums-datafab.o
|
||||
obj-$(CONFIG_USB_STORAGE_FREECOM) += ums-freecom.o
|
||||
obj-$(CONFIG_USB_STORAGE_ISD200) += ums-isd200.o
|
||||
obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += ums-jumpshot.o
|
||||
obj-$(CONFIG_USB_STORAGE_SDDR09) += ums-sddr09.o
|
||||
obj-$(CONFIG_USB_STORAGE_SDDR55) += ums-sddr55.o
|
||||
obj-$(CONFIG_USB_STORAGE_USBAT) += ums-usbat.o
|
||||
|
@ -36,6 +36,7 @@ ums-cypress-objs := cypress_atacb.o
|
|||
ums-datafab-objs := datafab.o
|
||||
ums-freecom-objs := freecom.o
|
||||
ums-isd200-objs := isd200.o
|
||||
ums-jumpshot-objs := jumpshot.o
|
||||
ums-sddr09-objs := sddr09.o
|
||||
ums-sddr55-objs := sddr55.o
|
||||
ums-usbat-objs := shuttle_usbat.o
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <scsi/scsi.h>
|
||||
|
@ -55,9 +56,57 @@
|
|||
#include "transport.h"
|
||||
#include "protocol.h"
|
||||
#include "debug.h"
|
||||
#include "jumpshot.h"
|
||||
|
||||
|
||||
/*
|
||||
* The table of devices
|
||||
*/
|
||||
#define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
|
||||
vendorName, productName, useProtocol, useTransport, \
|
||||
initFunction, flags) \
|
||||
{ USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax), \
|
||||
.driver_info = (flags)|(USB_US_TYPE_STOR<<24) }
|
||||
|
||||
struct usb_device_id jumpshot_usb_ids[] = {
|
||||
# include "unusual_jumpshot.h"
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, jumpshot_usb_ids);
|
||||
|
||||
#undef UNUSUAL_DEV
|
||||
|
||||
/*
|
||||
* The flags table
|
||||
*/
|
||||
#define UNUSUAL_DEV(idVendor, idProduct, bcdDeviceMin, bcdDeviceMax, \
|
||||
vendor_name, product_name, use_protocol, use_transport, \
|
||||
init_function, Flags) \
|
||||
{ \
|
||||
.vendorName = vendor_name, \
|
||||
.productName = product_name, \
|
||||
.useProtocol = use_protocol, \
|
||||
.useTransport = use_transport, \
|
||||
.initFunction = init_function, \
|
||||
}
|
||||
|
||||
static struct us_unusual_dev jumpshot_unusual_dev_list[] = {
|
||||
# include "unusual_jumpshot.h"
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
#undef UNUSUAL_DEV
|
||||
|
||||
|
||||
struct jumpshot_info {
|
||||
unsigned long sectors; /* total sector count */
|
||||
unsigned long ssize; /* sector size in bytes */
|
||||
|
||||
/* the following aren't used yet */
|
||||
unsigned char sense_key;
|
||||
unsigned long sense_asc; /* additional sense code */
|
||||
unsigned long sense_ascq; /* additional sense code qualifier */
|
||||
};
|
||||
|
||||
static inline int jumpshot_bulk_read(struct us_data *us,
|
||||
unsigned char *data,
|
||||
unsigned int len)
|
||||
|
@ -429,7 +478,7 @@ static void jumpshot_info_destructor(void *extra)
|
|||
|
||||
// Transport for the Lexar 'Jumpshot'
|
||||
//
|
||||
int jumpshot_transport(struct scsi_cmnd * srb, struct us_data *us)
|
||||
static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||
{
|
||||
struct jumpshot_info *info;
|
||||
int rc;
|
||||
|
@ -592,3 +641,49 @@ int jumpshot_transport(struct scsi_cmnd * srb, struct us_data *us)
|
|||
info->sense_ascq = 0x00;
|
||||
return USB_STOR_TRANSPORT_FAILED;
|
||||
}
|
||||
|
||||
static int jumpshot_probe(struct usb_interface *intf,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
struct us_data *us;
|
||||
int result;
|
||||
|
||||
result = usb_stor_probe1(&us, intf, id,
|
||||
(id - jumpshot_usb_ids) + jumpshot_unusual_dev_list);
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
us->transport_name = "Lexar Jumpshot Control/Bulk";
|
||||
us->transport = jumpshot_transport;
|
||||
us->transport_reset = usb_stor_Bulk_reset;
|
||||
us->max_lun = 1;
|
||||
|
||||
result = usb_stor_probe2(us);
|
||||
return result;
|
||||
}
|
||||
|
||||
static struct usb_driver jumpshot_driver = {
|
||||
.name = "ums-jumpshot",
|
||||
.probe = jumpshot_probe,
|
||||
.disconnect = usb_stor_disconnect,
|
||||
.suspend = usb_stor_suspend,
|
||||
.resume = usb_stor_resume,
|
||||
.reset_resume = usb_stor_reset_resume,
|
||||
.pre_reset = usb_stor_pre_reset,
|
||||
.post_reset = usb_stor_post_reset,
|
||||
.id_table = jumpshot_usb_ids,
|
||||
.soft_unbind = 1,
|
||||
};
|
||||
|
||||
static int __init jumpshot_init(void)
|
||||
{
|
||||
return usb_register(&jumpshot_driver);
|
||||
}
|
||||
|
||||
static void __exit jumpshot_exit(void)
|
||||
{
|
||||
usb_deregister(&jumpshot_driver);
|
||||
}
|
||||
|
||||
module_init(jumpshot_init);
|
||||
module_exit(jumpshot_exit);
|
||||
|
|
|
@ -794,14 +794,6 @@ UNUSUAL_DEV( 0x05c6, 0x1000, 0x0000, 0x9999,
|
|||
US_SC_DEVICE, US_PR_DEVICE, option_ms_init,
|
||||
0),
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_JUMPSHOT
|
||||
UNUSUAL_DEV( 0x05dc, 0x0001, 0x0000, 0x0001,
|
||||
"Lexar",
|
||||
"Jumpshot USB CF Reader",
|
||||
US_SC_SCSI, US_PR_JUMPSHOT, NULL,
|
||||
US_FL_NEED_OVERRIDE ),
|
||||
#endif
|
||||
|
||||
/* Reported by Blake Matheny <bmatheny@purdue.edu> */
|
||||
UNUSUAL_DEV( 0x05dc, 0xb002, 0x0000, 0x0113,
|
||||
"Lexar",
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
/* Driver for Lexar "Jumpshot" USB Compact Flash reader
|
||||
* Header File
|
||||
*
|
||||
* Current development and maintenance by:
|
||||
* (c) 2000 Jimmie Mayfield (mayfield+usb@sackheads.org)
|
||||
*
|
||||
* See jumpshot.c for more explanation
|
||||
/* Unusual Devices File for the Lexar "Jumpshot" Compact Flash reader
|
||||
*
|
||||
* 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
|
||||
|
@ -21,19 +15,13 @@
|
|||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef _USB_JUMPSHOT_H
|
||||
#define _USB_JUMPSHOT_H
|
||||
#if defined(CONFIG_USB_STORAGE_JUMPSHOT) || \
|
||||
defined(CONFIG_USB_STORAGE_JUMPSHOT_MODULE)
|
||||
|
||||
extern int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us);
|
||||
UNUSUAL_DEV( 0x05dc, 0x0001, 0x0000, 0x0001,
|
||||
"Lexar",
|
||||
"Jumpshot USB CF Reader",
|
||||
US_SC_SCSI, US_PR_JUMPSHOT, NULL,
|
||||
US_FL_NEED_OVERRIDE),
|
||||
|
||||
struct jumpshot_info {
|
||||
unsigned long sectors; // total sector count
|
||||
unsigned long ssize; // sector size in bytes
|
||||
|
||||
// the following aren't used yet
|
||||
unsigned char sense_key;
|
||||
unsigned long sense_asc; // additional sense code
|
||||
unsigned long sense_ascq; // additional sense code qualifier
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif /* defined(CONFIG_USB_STORAGE_JUMPSHOT) || ... */
|
|
@ -66,9 +66,6 @@
|
|||
#include "debug.h"
|
||||
#include "initializers.h"
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_JUMPSHOT
|
||||
#include "jumpshot.h"
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_ONETOUCH
|
||||
#include "onetouch.h"
|
||||
#endif
|
||||
|
@ -601,15 +598,6 @@ static void get_transport(struct us_data *us)
|
|||
us->transport_reset = usb_stor_Bulk_reset;
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_JUMPSHOT
|
||||
case US_PR_JUMPSHOT:
|
||||
us->transport_name = "Lexar Jumpshot Control/Bulk";
|
||||
us->transport = jumpshot_transport;
|
||||
us->transport_reset = usb_stor_Bulk_reset;
|
||||
us->max_lun = 1;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_ALAUDA
|
||||
case US_PR_ALAUDA:
|
||||
us->transport_name = "Alauda Control/Bulk";
|
||||
|
|
|
@ -81,6 +81,7 @@ static struct ignore_entry ignore_ids[] = {
|
|||
# include "unusual_datafab.h"
|
||||
# include "unusual_freecom.h"
|
||||
# include "unusual_isd200.h"
|
||||
# include "unusual_jumpshot.h"
|
||||
# include "unusual_sddr09.h"
|
||||
# include "unusual_sddr55.h"
|
||||
# include "unusual_usbat.h"
|
||||
|
|
Loading…
Reference in New Issue