#include "smscoreapi.h"
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/usb.h>
#include <linux/firmware.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <media/media-device.h>
#include "sms-cards.h"
#include "smsendian.h"
#define USB1_BUFFER_SIZE …
#define USB2_BUFFER_SIZE …
#define MAX_BUFFERS …
#define MAX_URBS …
struct smsusb_device_t;
enum smsusb_state { … };
struct smsusb_urb_t { … };
struct smsusb_device_t { … };
static int smsusb_submit_urb(struct smsusb_device_t *dev,
struct smsusb_urb_t *surb);
static void do_submit_urb(struct work_struct *work)
{ … }
static void smsusb_onresponse(struct urb *urb)
{ … }
static int smsusb_submit_urb(struct smsusb_device_t *dev,
struct smsusb_urb_t *surb)
{ … }
static void smsusb_stop_streaming(struct smsusb_device_t *dev)
{ … }
static int smsusb_start_streaming(struct smsusb_device_t *dev)
{ … }
static int smsusb_sendrequest(void *context, void *buffer, size_t size)
{ … }
static char *smsusb1_fw_lkup[] = …;
static inline char *sms_get_fw_name(int mode, int board_id)
{ … }
static int smsusb1_load_firmware(struct usb_device *udev, int id, int board_id)
{ … }
static void smsusb1_detectmode(void *context, int *mode)
{ … }
static int smsusb1_setmode(void *context, int mode)
{ … }
static void smsusb_term_device(struct usb_interface *intf)
{ … }
static void *siano_media_device_register(struct smsusb_device_t *dev,
int board_id)
{ … }
static int smsusb_init_device(struct usb_interface *intf, int board_id)
{ … }
static int smsusb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{ … }
static void smsusb_disconnect(struct usb_interface *intf)
{ … }
static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg)
{ … }
static int smsusb_resume(struct usb_interface *intf)
{ … }
static const struct usb_device_id smsusb_id_table[] = …;
MODULE_DEVICE_TABLE(usb, smsusb_id_table);
static struct usb_driver smsusb_driver = …;
module_usb_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;