#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/pm.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/mfd/wm831x/core.h>
#include <linux/mfd/wm831x/irq.h>
#include <linux/mfd/wm831x/pdata.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/types.h>
#define WM831X_TCH_ENA …
#define WM831X_TCH_CVT_ENA …
#define WM831X_TCH_SLPENA …
#define WM831X_TCH_Z_ENA …
#define WM831X_TCH_Y_ENA …
#define WM831X_TCH_X_ENA …
#define WM831X_TCH_DELAY_MASK …
#define WM831X_TCH_DELAY_SHIFT …
#define WM831X_TCH_DELAY_WIDTH …
#define WM831X_TCH_RATE_MASK …
#define WM831X_TCH_RATE_SHIFT …
#define WM831X_TCH_RATE_WIDTH …
#define WM831X_TCH_PD_WK …
#define WM831X_TCH_5WIRE …
#define WM831X_TCH_PDONLY …
#define WM831X_TCH_ISEL …
#define WM831X_TCH_RPU_MASK …
#define WM831X_TCH_RPU_SHIFT …
#define WM831X_TCH_RPU_WIDTH …
#define WM831X_TCH_PD …
#define WM831X_TCH_DATA_MASK …
#define WM831X_TCH_DATA_SHIFT …
#define WM831X_TCH_DATA_WIDTH …
struct wm831x_ts { … };
static void wm831x_pd_data_work(struct work_struct *work)
{ … }
static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
{ … }
static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data)
{ … }
static int wm831x_ts_input_open(struct input_dev *idev)
{ … }
static void wm831x_ts_input_close(struct input_dev *idev)
{ … }
static int wm831x_ts_probe(struct platform_device *pdev)
{ … }
static void wm831x_ts_remove(struct platform_device *pdev)
{ … }
static struct platform_driver wm831x_ts_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;