#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/usb/input.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include <linux/mutex.h>
#define USB_REQ_GET_REPORT …
#define USB_REQ_SET_REPORT …
#define USB_VENDOR_ID_PEGASUSTECH …
#define USB_DEVICE_ID_PEGASUS_NOTETAKER_EN100 …
#define NOTETAKER_REPORT_ID …
#define NOTETAKER_SET_CMD …
#define NOTETAKER_SET_MODE …
#define NOTETAKER_LED_MOUSE …
#define PEN_MODE_XY …
#define SPECIAL_COMMAND …
#define BUTTON_PRESSED …
#define COMMAND_VERSION …
#define BATTERY_NO_REPORT …
#define BATTERY_LOW …
#define BATTERY_GOOD …
#define PEN_BUTTON_PRESSED …
#define PEN_TIP …
struct pegasus { … };
static int pegasus_control_msg(struct pegasus *pegasus, u8 *data, int len)
{ … }
static int pegasus_set_mode(struct pegasus *pegasus, u8 mode, u8 led)
{ … }
static void pegasus_parse_packet(struct pegasus *pegasus)
{ … }
static void pegasus_irq(struct urb *urb)
{ … }
static void pegasus_init(struct work_struct *work)
{ … }
static int pegasus_open(struct input_dev *dev)
{ … }
static void pegasus_close(struct input_dev *dev)
{ … }
static int pegasus_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{ … }
static void pegasus_disconnect(struct usb_interface *intf)
{ … }
static int pegasus_suspend(struct usb_interface *intf, pm_message_t message)
{ … }
static int pegasus_resume(struct usb_interface *intf)
{ … }
static int pegasus_reset_resume(struct usb_interface *intf)
{ … }
static const struct usb_device_id pegasus_ids[] = …;
MODULE_DEVICE_TABLE(usb, pegasus_ids);
static struct usb_driver pegasus_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;