#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/sched/signal.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/mutex.h>
#include <linux/uaccess.h>
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
#define ADU_VENDOR_ID …
#define ADU_PRODUCT_ID …
static const struct usb_device_id device_table[] = …;
MODULE_DEVICE_TABLE(usb, device_table);
#ifdef CONFIG_USB_DYNAMIC_MINORS
#define ADU_MINOR_BASE …
#else
#define ADU_MINOR_BASE …
#endif
#define MAX_DEVICES …
#define COMMAND_TIMEOUT …
struct adu_device { … };
static DEFINE_MUTEX(adutux_mutex);
static struct usb_driver adu_driver;
static inline void adu_debug_data(struct device *dev, const char *function,
int size, const unsigned char *data)
{ … }
static void adu_abort_transfers(struct adu_device *dev)
{ … }
static void adu_delete(struct adu_device *dev)
{ … }
static void adu_interrupt_in_callback(struct urb *urb)
{ … }
static void adu_interrupt_out_callback(struct urb *urb)
{ … }
static int adu_open(struct inode *inode, struct file *file)
{ … }
static void adu_release_internal(struct adu_device *dev)
{ … }
static int adu_release(struct inode *inode, struct file *file)
{ … }
static ssize_t adu_read(struct file *file, __user char *buffer, size_t count,
loff_t *ppos)
{ … }
static ssize_t adu_write(struct file *file, const __user char *buffer,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations adu_fops = …;
static struct usb_class_driver adu_class = …;
static int adu_probe(struct usb_interface *interface,
const struct usb_device_id *id)
{ … }
static void adu_disconnect(struct usb_interface *interface)
{ … }
static struct usb_driver adu_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;