#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/gpio/consumer.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#define CY8CTMG110_DRIVER_NAME …
#define CY8CTMG110_X_MIN …
#define CY8CTMG110_Y_MIN …
#define CY8CTMG110_X_MAX …
#define CY8CTMG110_Y_MAX …
#define CY8CTMG110_TOUCH_WAKEUP_TIME …
#define CY8CTMG110_TOUCH_SLEEP_TIME …
#define CY8CTMG110_TOUCH_X1 …
#define CY8CTMG110_TOUCH_Y1 …
#define CY8CTMG110_TOUCH_X2 …
#define CY8CTMG110_TOUCH_Y2 …
#define CY8CTMG110_FINGERS …
#define CY8CTMG110_GESTURE …
#define CY8CTMG110_REG_MAX …
struct cy8ctmg110 { … };
static void cy8ctmg110_power(struct cy8ctmg110 *ts, bool poweron)
{ … }
static int cy8ctmg110_write_regs(struct cy8ctmg110 *tsc, unsigned char reg,
unsigned char len, unsigned char *value)
{ … }
static int cy8ctmg110_read_regs(struct cy8ctmg110 *tsc,
unsigned char *data, unsigned char len, unsigned char cmd)
{ … }
static int cy8ctmg110_touch_pos(struct cy8ctmg110 *tsc)
{ … }
static int cy8ctmg110_set_sleepmode(struct cy8ctmg110 *ts, bool sleep)
{ … }
static irqreturn_t cy8ctmg110_irq_thread(int irq, void *dev_id)
{ … }
static void cy8ctmg110_shut_off(void *_ts)
{ … }
static int cy8ctmg110_probe(struct i2c_client *client)
{ … }
static int cy8ctmg110_suspend(struct device *dev)
{ … }
static int cy8ctmg110_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(cy8ctmg110_pm,
cy8ctmg110_suspend, cy8ctmg110_resume);
static const struct i2c_device_id cy8ctmg110_idtable[] = …;
MODULE_DEVICE_TABLE(i2c, cy8ctmg110_idtable);
static struct i2c_driver cy8ctmg110_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;