#include <linux/kernel.h>
#include <linux/err.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/of.h>
#include <linux/sort.h>
#include <linux/pm_wakeirq.h>
#include <linux/mfd/ti_am335x_tscadc.h>
#define ADCFSM_STEPID …
#define SEQ_SETTLE …
#define MAX_12BIT …
#define TSC_IRQENB_MASK …
static const int config_pins[] = …;
struct titsc { … };
static unsigned int titsc_readl(struct titsc *ts, unsigned int reg)
{ … }
static void titsc_writel(struct titsc *tsc, unsigned int reg,
unsigned int val)
{ … }
static int titsc_config_wires(struct titsc *ts_dev)
{ … }
static void titsc_step_config(struct titsc *ts_dev)
{ … }
static int titsc_cmp_coord(const void *a, const void *b)
{ … }
static void titsc_read_coordinates(struct titsc *ts_dev,
u32 *x, u32 *y, u32 *z1, u32 *z2)
{ … }
static irqreturn_t titsc_irq(int irq, void *dev)
{ … }
static int titsc_parse_dt(struct platform_device *pdev,
struct titsc *ts_dev)
{ … }
static int titsc_probe(struct platform_device *pdev)
{ … }
static void titsc_remove(struct platform_device *pdev)
{ … }
static int titsc_suspend(struct device *dev)
{ … }
static int titsc_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(titsc_pm_ops, titsc_suspend, titsc_resume);
static const struct of_device_id ti_tsc_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, ti_tsc_dt_ids);
static struct platform_driver ti_tsc_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;