#include <linux/module.h>
#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include "usb.h"
#include "transport.h"
#include "protocol.h"
#include "debug.h"
#include "scsiglue.h"
#define DRV_NAME …
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_IMPORT_NS(…);
#ifdef CONFIG_USB_STORAGE_DEBUG
static void pdump(struct us_data *us, void *ibuffer, int length);
#endif
#define ERR_STAT …
#define DRQ_STAT …
struct freecom_cb_wrap { … };
struct freecom_xfer_wrap { … } __attribute__ ((packed));
struct freecom_ide_out { … };
struct freecom_ide_in { … };
struct freecom_status { … };
#define FCM_INT_STATUS …
#define FCM_STATUS_BUSY …
#define FCM_PACKET_ATAPI …
#define FCM_PACKET_STATUS …
#define FCM_PACKET_INPUT …
#define FCM_PACKET_OUTPUT …
#define FCM_PACKET_IDE_WRITE …
#define FCM_PACKET_IDE_READ …
#define FCM_PACKET_LENGTH …
#define FCM_STATUS_PACKET_LENGTH …
static int init_freecom(struct us_data *us);
#define UNUSUAL_DEV …
static struct usb_device_id freecom_usb_ids[] = …;
MODULE_DEVICE_TABLE(usb, freecom_usb_ids);
#undef UNUSUAL_DEV
#define UNUSUAL_DEV …
static struct us_unusual_dev freecom_unusual_dev_list[] = …;
#undef UNUSUAL_DEV
static int
freecom_readdata (struct scsi_cmnd *srb, struct us_data *us,
unsigned int ipipe, unsigned int opipe, int count)
{ … }
static int
freecom_writedata (struct scsi_cmnd *srb, struct us_data *us,
int unsigned ipipe, unsigned int opipe, int count)
{ … }
static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us)
{ … }
static int init_freecom(struct us_data *us)
{ … }
static int usb_stor_freecom_reset(struct us_data *us)
{ … }
#ifdef CONFIG_USB_STORAGE_DEBUG
static void pdump(struct us_data *us, void *ibuffer, int length)
{ … }
#endif
static struct scsi_host_template freecom_host_template;
static int freecom_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{ … }
static struct usb_driver freecom_driver = …;
module_usb_stor_driver(freecom_driver, freecom_host_template, DRV_NAME);