#include <linux/bits.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <asm/unaligned.h>
#define WACOM_TIP_SWITCH …
#define WACOM_BARREL_SWITCH …
#define WACOM_ERASER …
#define WACOM_INVERT …
#define WACOM_BARREL_SWITCH_2 …
#define WACOM_IN_PROXIMITY …
#define WACOM_COMMAND_LSB …
#define WACOM_COMMAND_MSB …
#define WACOM_DATA_LSB …
#define WACOM_DATA_MSB …
#define REPORT_FEATURE …
#define OPCODE_GET_REPORT …
#define WACOM_QUERY_REPORT …
#define WACOM_QUERY_SIZE …
struct wacom_features { … };
struct wacom_i2c { … };
static int wacom_query_device(struct i2c_client *client,
struct wacom_features *features)
{ … }
static irqreturn_t wacom_i2c_irq(int irq, void *dev_id)
{ … }
static int wacom_i2c_open(struct input_dev *dev)
{ … }
static void wacom_i2c_close(struct input_dev *dev)
{ … }
static int wacom_i2c_probe(struct i2c_client *client)
{ … }
static int wacom_i2c_suspend(struct device *dev)
{ … }
static int wacom_i2c_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(wacom_i2c_pm, wacom_i2c_suspend, wacom_i2c_resume);
static const struct i2c_device_id wacom_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, wacom_i2c_id);
static struct i2c_driver wacom_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;