#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/usb/input.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define USB_VENDOR_ID_HANWANG …
#define HANWANG_TABLET_INT_CLASS …
#define HANWANG_TABLET_INT_SUB_CLASS …
#define HANWANG_TABLET_INT_PROTOCOL …
#define ART_MASTER_PKGLEN_MAX …
#define STYLUS_DEVICE_ID …
#define TOUCH_DEVICE_ID …
#define CURSOR_DEVICE_ID …
#define ERASER_DEVICE_ID …
#define PAD_DEVICE_ID …
#define HANWANG_TABLET_DEVICE(vend, cl, sc, pr) …
enum hanwang_tablet_type { … };
struct hanwang { … };
struct hanwang_features { … };
static const struct hanwang_features features_array[] = …;
static const int hw_eventtypes[] = …;
static const int hw_absevents[] = …;
static const int hw_btnevents[] = …;
static const int hw_mscevents[] = …;
static void hanwang_parse_packet(struct hanwang *hanwang)
{ … }
static void hanwang_irq(struct urb *urb)
{ … }
static int hanwang_open(struct input_dev *dev)
{ … }
static void hanwang_close(struct input_dev *dev)
{ … }
static bool get_features(struct usb_device *dev, struct hanwang *hanwang)
{ … }
static int hanwang_probe(struct usb_interface *intf, const struct usb_device_id *id)
{ … }
static void hanwang_disconnect(struct usb_interface *intf)
{ … }
static const struct usb_device_id hanwang_ids[] = …;
MODULE_DEVICE_TABLE(usb, hanwang_ids);
static struct usb_driver hanwang_driver = …;
module_usb_driver(…) …;