#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/kref.h>
#include <linux/mutex.h>
#include <linux/uaccess.h>
#include <linux/usb.h>
#include <linux/hid.h>
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
#define YUREX_VENDOR_ID …
#define YUREX_PRODUCT_ID …
#define CMD_ACK …
#define CMD_ANIMATE …
#define CMD_COUNT …
#define CMD_LED …
#define CMD_READ …
#define CMD_SET …
#define CMD_VERSION …
#define CMD_EOF …
#define CMD_PADDING …
#define YUREX_BUF_SIZE …
#define YUREX_WRITE_TIMEOUT …
#define MAX_S64_STRLEN …
static struct usb_device_id yurex_table[] = …;
MODULE_DEVICE_TABLE(usb, yurex_table);
#ifdef CONFIG_USB_DYNAMIC_MINORS
#define YUREX_MINOR_BASE …
#else
#define YUREX_MINOR_BASE …
#endif
struct usb_yurex { … };
#define to_yurex_dev(d) …
static struct usb_driver yurex_driver;
static const struct file_operations yurex_fops;
static void yurex_control_callback(struct urb *urb)
{ … }
static void yurex_delete(struct kref *kref)
{ … }
static struct usb_class_driver yurex_class = …;
static void yurex_interrupt(struct urb *urb)
{ … }
static int yurex_probe(struct usb_interface *interface, const struct usb_device_id *id)
{ … }
static void yurex_disconnect(struct usb_interface *interface)
{ … }
static struct usb_driver yurex_driver = …;
static int yurex_fasync(int fd, struct file *file, int on)
{ … }
static int yurex_open(struct inode *inode, struct file *file)
{ … }
static int yurex_release(struct inode *inode, struct file *file)
{ … }
static ssize_t yurex_read(struct file *file, char __user *buffer, size_t count,
loff_t *ppos)
{ … }
static ssize_t yurex_write(struct file *file, const char __user *user_buffer,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations yurex_fops = …;
module_usb_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;