#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/mt.h>
#include <linux/input/touchscreen.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
#define ZINITIX_SWRESET_CMD …
#define ZINITIX_WAKEUP_CMD …
#define ZINITIX_IDLE_CMD …
#define ZINITIX_SLEEP_CMD …
#define ZINITIX_CLEAR_INT_STATUS_CMD …
#define ZINITIX_CALIBRATE_CMD …
#define ZINITIX_SAVE_STATUS_CMD …
#define ZINITIX_SAVE_CALIBRATION_CMD …
#define ZINITIX_RECALL_FACTORY_CMD …
#define ZINITIX_THRESHOLD …
#define ZINITIX_LARGE_PALM_REJECT_AREA_TH …
#define ZINITIX_DEBUG_REG …
#define ZINITIX_TOUCH_MODE …
#define ZINITIX_CHIP_REVISION …
#define ZINITIX_FIRMWARE_VERSION …
#define ZINITIX_USB_DETECT …
#define ZINITIX_MINOR_FW_VERSION …
#define ZINITIX_VENDOR_ID …
#define ZINITIX_HW_ID …
#define ZINITIX_DATA_VERSION_REG …
#define ZINITIX_SUPPORTED_FINGER_NUM …
#define ZINITIX_EEPROM_INFO …
#define ZINITIX_INITIAL_TOUCH_MODE …
#define ZINITIX_TOTAL_NUMBER_OF_X …
#define ZINITIX_TOTAL_NUMBER_OF_Y …
#define ZINITIX_DELAY_RAW_FOR_HOST …
#define ZINITIX_BUTTON_SUPPORTED_NUM …
#define ZINITIX_BUTTON_SENSITIVITY …
#define ZINITIX_DUMMY_BUTTON_SENSITIVITY …
#define ZINITIX_X_RESOLUTION …
#define ZINITIX_Y_RESOLUTION …
#define ZINITIX_POINT_STATUS_REG …
#define ZINITIX_ICON_STATUS_REG …
#define ZINITIX_POINT_COORD_REG …
#define ZINITIX_AFE_FREQUENCY …
#define ZINITIX_DND_N_COUNT …
#define ZINITIX_DND_U_COUNT …
#define ZINITIX_RAWDATA_REG …
#define ZINITIX_EEPROM_INFO_REG …
#define ZINITIX_INT_ENABLE_FLAG …
#define ZINITIX_PERIODICAL_INTERRUPT_INTERVAL …
#define ZINITIX_BTN_WIDTH …
#define ZINITIX_CHECKSUM_RESULT …
#define ZINITIX_INIT_FLASH …
#define ZINITIX_WRITE_FLASH …
#define ZINITIX_READ_FLASH …
#define ZINITIX_INTERNAL_FLAG_02 …
#define ZINITIX_INTERNAL_FLAG_03 …
#define ZINITIX_I2C_CHECKSUM_WCNT …
#define ZINITIX_I2C_CHECKSUM_RESULT …
#define BIT_PT_CNT_CHANGE …
#define BIT_DOWN …
#define BIT_MOVE …
#define BIT_UP …
#define BIT_PALM …
#define BIT_PALM_REJECT …
#define BIT_RESERVED_0 …
#define BIT_RESERVED_1 …
#define BIT_WEIGHT_CHANGE …
#define BIT_PT_NO_CHANGE …
#define BIT_REJECT …
#define BIT_PT_EXIST …
#define BIT_RESERVED_2 …
#define BIT_ERROR …
#define BIT_DEBUG …
#define BIT_ICON_EVENT …
#define SUB_BIT_EXIST …
#define SUB_BIT_DOWN …
#define SUB_BIT_MOVE …
#define SUB_BIT_UP …
#define SUB_BIT_UPDATE …
#define SUB_BIT_WAIT …
#define DEFAULT_TOUCH_POINT_MODE …
#define MAX_SUPPORTED_FINGER_NUM …
#define CHIP_ON_DELAY …
#define FIRMWARE_ON_DELAY …
struct point_coord { … };
struct touch_event { … };
struct bt541_ts_data { … };
static int zinitix_read_data(struct i2c_client *client,
u16 reg, void *values, size_t length)
{ … }
static int zinitix_write_u16(struct i2c_client *client, u16 reg, u16 value)
{ … }
static int zinitix_write_cmd(struct i2c_client *client, u16 reg)
{ … }
static int zinitix_init_touch(struct bt541_ts_data *bt541)
{ … }
static int zinitix_init_regulators(struct bt541_ts_data *bt541)
{ … }
static int zinitix_send_power_on_sequence(struct bt541_ts_data *bt541)
{ … }
static void zinitix_report_finger(struct bt541_ts_data *bt541, int slot,
const struct point_coord *p)
{ … }
static irqreturn_t zinitix_ts_irq_handler(int irq, void *bt541_handler)
{ … }
static int zinitix_start(struct bt541_ts_data *bt541)
{ … }
static int zinitix_stop(struct bt541_ts_data *bt541)
{ … }
static int zinitix_input_open(struct input_dev *dev)
{ … }
static void zinitix_input_close(struct input_dev *dev)
{ … }
static int zinitix_init_input_dev(struct bt541_ts_data *bt541)
{ … }
static int zinitix_ts_probe(struct i2c_client *client)
{ … }
static int zinitix_suspend(struct device *dev)
{ … }
static int zinitix_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(zinitix_pm_ops, zinitix_suspend, zinitix_resume);
#ifdef CONFIG_OF
static const struct of_device_id zinitix_of_match[] = …;
MODULE_DEVICE_TABLE(of, zinitix_of_match);
#endif
static struct i2c_driver zinitix_ts_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;