#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/workqueue.h>
#include <linux/mfd/da903x.h>
#include <linux/slab.h>
#define DA9034_MANUAL_CTRL …
#define DA9034_LDO_ADC_EN …
#define DA9034_AUTO_CTRL1 …
#define DA9034_AUTO_CTRL2 …
#define DA9034_AUTO_TSI_EN …
#define DA9034_PEN_DETECT …
#define DA9034_TSI_CTRL1 …
#define DA9034_TSI_CTRL2 …
#define DA9034_TSI_X_MSB …
#define DA9034_TSI_Y_MSB …
#define DA9034_TSI_XY_LSB …
enum { … };
enum { … };
struct da9034_touch { … };
static inline int is_pen_down(struct da9034_touch *touch)
{ … }
static inline int detect_pen_down(struct da9034_touch *touch, int on)
{ … }
static int read_tsi(struct da9034_touch *touch)
{ … }
static inline int start_tsi(struct da9034_touch *touch)
{ … }
static inline int stop_tsi(struct da9034_touch *touch)
{ … }
static inline void report_pen_down(struct da9034_touch *touch)
{ … }
static inline void report_pen_up(struct da9034_touch *touch)
{ … }
static void da9034_event_handler(struct da9034_touch *touch, int event)
{ … }
static void da9034_tsi_work(struct work_struct *work)
{ … }
static int da9034_touch_notifier(struct notifier_block *nb,
unsigned long event, void *data)
{ … }
static int da9034_touch_open(struct input_dev *dev)
{ … }
static void da9034_touch_close(struct input_dev *dev)
{ … }
static int da9034_touch_probe(struct platform_device *pdev)
{ … }
static struct platform_driver da9034_touch_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;