#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/touchscreen.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/of.h>
#define I2C_REG_TOUCH0 …
#define I2C_REG_TOUCH1 …
#define I2C_REG_CHANMASK …
#define I2C_REG_IRQMASK …
#define I2C_REG_IRQSRC …
#define I2C_REG_SOFTRESET …
#define I2C_REG_SX8650_STAT …
#define SX8650_STAT_CONVIRQ …
#define CMD_READ_REGISTER …
#define CMD_PENTRG …
#define SOFTRESET_VALUE …
#define IRQ_PENTOUCH_TOUCHCONVDONE …
#define IRQ_PENRELEASE …
#define CONDIRQ …
#define RPDNT_100K …
#define FILT_7SA …
#define CONV_X …
#define CONV_Y …
#define RATE_MANUAL …
#define RATE_5000CPS …
#define POWDLY_1_1MS …
#define SX8650_PENIRQ_TIMEOUT …
#define MAX_12BIT …
#define MAX_I2C_READ_LEN …
#define CH_X …
#define CH_Y …
struct sx865x_data { … };
struct sx8654 { … };
static inline void sx865x_penrelease(struct sx8654 *ts)
{ … }
static void sx865x_penrelease_timer_handler(struct timer_list *t)
{ … }
static irqreturn_t sx8650_irq(int irq, void *handle)
{ … }
static irqreturn_t sx8654_irq(int irq, void *handle)
{ … }
static int sx8654_reset(struct sx8654 *ts)
{ … }
static int sx8654_open(struct input_dev *dev)
{ … }
static void sx8654_close(struct input_dev *dev)
{ … }
static int sx8654_probe(struct i2c_client *client)
{ … }
static const struct sx865x_data sx8650_data = …;
static const struct sx865x_data sx8654_data = …;
#ifdef CONFIG_OF
static const struct of_device_id sx8654_of_match[] = …;
MODULE_DEVICE_TABLE(of, sx8654_of_match);
#endif
static const struct i2c_device_id sx8654_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, sx8654_id_table);
static struct i2c_driver sx8654_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;