#include <linux/bitops.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/of.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#define AR1021_TOUCH_PKG_SIZE …
#define AR1021_MAX_X …
#define AR1021_MAX_Y …
#define AR1021_CMD …
#define AR1021_CMD_ENABLE_TOUCH …
struct ar1021_i2c { … };
static irqreturn_t ar1021_i2c_irq(int irq, void *dev_id)
{ … }
static int ar1021_i2c_open(struct input_dev *dev)
{ … }
static void ar1021_i2c_close(struct input_dev *dev)
{ … }
static int ar1021_i2c_probe(struct i2c_client *client)
{ … }
static int ar1021_i2c_suspend(struct device *dev)
{ … }
static int ar1021_i2c_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(ar1021_i2c_pm,
ar1021_i2c_suspend, ar1021_i2c_resume);
static const struct i2c_device_id ar1021_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, ar1021_i2c_id);
static const struct of_device_id ar1021_i2c_of_match[] = …;
MODULE_DEVICE_TABLE(of, ar1021_i2c_of_match);
static struct i2c_driver ar1021_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;