#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/usb/input.h>
static int debug;
module_param(debug, int, 0444);
MODULE_PARM_DESC(…) …;
#define USB_KEYSPAN_VENDOR_ID …
#define USB_KEYSPAN_PRODUCT_UIA11 …
#define ZERO …
#define ZERO_MASK …
#define ONE …
#define ONE_MASK …
#define SYNC …
#define SYNC_MASK …
#define STOP …
#define STOP_MASK …
#define GAP …
#define RECV_SIZE …
static const unsigned short keyspan_key_table[] = …;
static const struct usb_device_id keyspan_table[] = …;
struct keyspan_message { … };
struct bit_tester { … };
struct usb_keyspan { … };
static struct usb_driver keyspan_driver;
static void keyspan_print(struct usb_keyspan* dev)
{ … }
static int keyspan_load_tester(struct usb_keyspan* dev, int bits_needed)
{ … }
static void keyspan_report_button(struct usb_keyspan *remote, int button, int press)
{ … }
static void keyspan_check_data(struct usb_keyspan *remote)
{ … }
static int keyspan_setup(struct usb_device* dev)
{ … }
static void keyspan_irq_recv(struct urb *urb)
{ … }
static int keyspan_open(struct input_dev *dev)
{ … }
static void keyspan_close(struct input_dev *dev)
{ … }
static struct usb_endpoint_descriptor *keyspan_get_in_endpoint(struct usb_host_interface *iface)
{ … }
static int keyspan_probe(struct usb_interface *interface, const struct usb_device_id *id)
{ … }
static void keyspan_disconnect(struct usb_interface *interface)
{ … }
static struct usb_driver keyspan_driver = …;
module_usb_driver(…) …;
MODULE_DEVICE_TABLE(usb, keyspan_table);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;