#include <linux/clk.h>
#include <linux/device.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/mfd/imx25-tsadc.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
static const char mx25_tcq_name[] = …;
enum mx25_tcq_mode { … };
struct mx25_tcq_priv { … };
static const struct regmap_config mx25_tcq_regconfig = …;
static const struct of_device_id mx25_tcq_ids[] = …;
MODULE_DEVICE_TABLE(of, mx25_tcq_ids);
#define TSC_4WIRE_PRE_INDEX …
#define TSC_4WIRE_X_INDEX …
#define TSC_4WIRE_Y_INDEX …
#define TSC_4WIRE_POST_INDEX …
#define TSC_4WIRE_LEAVE …
#define MX25_TSC_DEF_THRESHOLD …
#define TSC_MAX_SAMPLES …
#define MX25_TSC_REPEAT_WAIT …
enum mx25_adc_configurations { … };
#define MX25_PRECHARGE_VALUE …
#define MX25_TOUCH_DETECT_VALUE …
static void imx25_setup_queue_cfgs(struct mx25_tcq_priv *priv,
unsigned int settling_cnt)
{ … }
static int imx25_setup_queue_4wire(struct mx25_tcq_priv *priv,
unsigned settling_cnt, int *items)
{ … }
static void mx25_tcq_disable_touch_irq(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_enable_touch_irq(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_disable_fifo_irq(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_enable_fifo_irq(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_force_queue_start(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_force_queue_stop(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_fifo_reset(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_re_enable_touch_detection(struct mx25_tcq_priv *priv)
{ … }
static void mx25_tcq_create_event_for_4wire(struct mx25_tcq_priv *priv,
u32 *sample_buf,
unsigned int samples)
{ … }
static irqreturn_t mx25_tcq_irq_thread(int irq, void *dev_id)
{ … }
static irqreturn_t mx25_tcq_irq(int irq, void *dev_id)
{ … }
static int mx25_tcq_init(struct mx25_tcq_priv *priv)
{ … }
static int mx25_tcq_parse_dt(struct platform_device *pdev,
struct mx25_tcq_priv *priv)
{ … }
static int mx25_tcq_open(struct input_dev *idev)
{ … }
static void mx25_tcq_close(struct input_dev *idev)
{ … }
static int mx25_tcq_probe(struct platform_device *pdev)
{ … }
static struct platform_driver mx25_tcq_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;