#include <asm/page.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/firmware.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/timer.h>
#include <linux/types.h>
#include <linux/usb/ch9.h>
#include <linux/workqueue.h>
#include "usbatm.h"
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
static const char speedtch_driver_name[] = …;
#define CTRL_TIMEOUT …
#define DATA_TIMEOUT …
#define OFFSET_7 …
#define OFFSET_b …
#define OFFSET_d …
#define OFFSET_e …
#define OFFSET_f …
#define SIZE_7 …
#define SIZE_b …
#define SIZE_d …
#define SIZE_e …
#define SIZE_f …
#define MIN_POLL_DELAY …
#define MAX_POLL_DELAY …
#define RESUBMIT_DELAY …
#define DEFAULT_BULK_ALTSETTING …
#define DEFAULT_ISOC_ALTSETTING …
#define DEFAULT_DL_512_FIRST …
#define DEFAULT_ENABLE_ISOC …
#define DEFAULT_SW_BUFFERING …
static unsigned int altsetting = …;
static bool dl_512_first = …;
static bool enable_isoc = …;
static bool sw_buffering = …;
#define DEFAULT_B_MAX_DSL …
#define DEFAULT_MODEM_MODE …
#define MODEM_OPTION_LENGTH …
static const unsigned char DEFAULT_MODEM_OPTION[MODEM_OPTION_LENGTH] = …;
static unsigned int BMaxDSL = …;
static unsigned char ModemMode = …;
static unsigned char ModemOption[MODEM_OPTION_LENGTH];
static unsigned int num_ModemOption;
module_param(altsetting, uint, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param(dl_512_first, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param(enable_isoc, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param(sw_buffering, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param(BMaxDSL, uint, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param(ModemMode, byte, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
module_param_array(…);
MODULE_PARM_DESC(…) …;
#define INTERFACE_DATA …
#define ENDPOINT_INT …
#define ENDPOINT_BULK_DATA …
#define ENDPOINT_ISOC_DATA …
#define ENDPOINT_FIRMWARE …
struct speedtch_params { … };
struct speedtch_instance_data { … };
static void speedtch_set_swbuff(struct speedtch_instance_data *instance, int state)
{ … }
static void speedtch_test_sequence(struct speedtch_instance_data *instance)
{ … }
static int speedtch_upload_firmware(struct speedtch_instance_data *instance,
const struct firmware *fw1,
const struct firmware *fw2)
{ … }
static int speedtch_find_firmware(struct usbatm_data *usbatm, struct usb_interface *intf,
int phase, const struct firmware **fw_p)
{ … }
static int speedtch_heavy_init(struct usbatm_data *usbatm, struct usb_interface *intf)
{ … }
static int speedtch_read_status(struct speedtch_instance_data *instance)
{ … }
static int speedtch_start_synchro(struct speedtch_instance_data *instance)
{ … }
static void speedtch_check_status(struct work_struct *work)
{ … }
static void speedtch_status_poll(struct timer_list *t)
{ … }
static void speedtch_resubmit_int(struct timer_list *t)
{ … }
static void speedtch_handle_int(struct urb *int_urb)
{ … }
static int speedtch_atm_start(struct usbatm_data *usbatm, struct atm_dev *atm_dev)
{ … }
static void speedtch_atm_stop(struct usbatm_data *usbatm, struct atm_dev *atm_dev)
{ … }
static int speedtch_pre_reset(struct usb_interface *intf)
{ … }
static int speedtch_post_reset(struct usb_interface *intf)
{ … }
static const struct usb_device_id speedtch_usb_ids[] = …;
MODULE_DEVICE_TABLE(usb, speedtch_usb_ids);
static int speedtch_usb_probe(struct usb_interface *, const struct usb_device_id *);
static struct usb_driver speedtch_usb_driver = …;
static void speedtch_release_interfaces(struct usb_device *usb_dev,
int num_interfaces)
{ … }
static int speedtch_bind(struct usbatm_data *usbatm,
struct usb_interface *intf,
const struct usb_device_id *id)
{ … }
static void speedtch_unbind(struct usbatm_data *usbatm, struct usb_interface *intf)
{ … }
static struct usbatm_driver speedtch_usbatm_driver = …;
static int speedtch_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
{ … }
module_usb_driver(…) …;
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;