#include <linux/delay.h>
#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/iio/consumer.h>
#include <linux/iio/types.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/types.h>
#define DRIVER_NAME …
#define VF_ADC_MAX …
#define COLI_TOUCH_MIN_DELAY_US …
#define COLI_TOUCH_MAX_DELAY_US …
#define COLI_PULLUP_MIN_DELAY_US …
#define COLI_PULLUP_MAX_DELAY_US …
#define COLI_TOUCH_NO_OF_AVGS …
#define COLI_TOUCH_REQ_ADC_CHAN …
struct vf50_touch_device { … };
static int adc_ts_measure(struct iio_channel *channel,
struct gpio_desc *plate_p, struct gpio_desc *plate_m)
{ … }
static void vf50_ts_enable_touch_detection(struct vf50_touch_device *vf50_ts)
{ … }
static irqreturn_t vf50_ts_irq_bh(int irq, void *private)
{ … }
static int vf50_ts_open(struct input_dev *dev_input)
{ … }
static void vf50_ts_close(struct input_dev *dev_input)
{ … }
static int vf50_ts_get_gpiod(struct device *dev, struct gpio_desc **gpio_d,
const char *con_id, enum gpiod_flags flags)
{ … }
static void vf50_ts_channel_release(void *data)
{ … }
static int vf50_ts_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id vf50_touch_of_match[] = …;
MODULE_DEVICE_TABLE(of, vf50_touch_of_match);
static struct platform_driver vf50_touch_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;