linux/drivers/input/touchscreen/exc3000.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Driver for I2C connected EETI EXC3000 multiple touch controller
 *
 * Copyright (C) 2017 Ahmet Inan <[email protected]>
 *
 * minimal implementation based on egalax_ts.c and egalax_i2c.c
 */

#include <linux/acpi.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/mt.h>
#include <linux/input/touchscreen.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <linux/sizes.h>
#include <linux/timer.h>
#include <linux/unaligned.h>

#define EXC3000_NUM_SLOTS
#define EXC3000_SLOTS_PER_FRAME
#define EXC3000_LEN_FRAME
#define EXC3000_LEN_VENDOR_REQUEST
#define EXC3000_LEN_POINT

#define EXC3000_LEN_MODEL_NAME
#define EXC3000_LEN_FW_VERSION

#define EXC3000_VENDOR_EVENT
#define EXC3000_MT1_EVENT
#define EXC3000_MT2_EVENT

#define EXC3000_TIMEOUT_MS

#define EXC3000_RESET_MS
#define EXC3000_READY_MS

static const struct i2c_device_id exc3000_id[];

struct eeti_dev_info {};

enum eeti_dev_id {};

static struct eeti_dev_info exc3000_info[] =;

struct exc3000_data {};

static void exc3000_report_slots(struct input_dev *input,
				 struct touchscreen_properties *prop,
				 const u8 *buf, int num)
{}

static void exc3000_timer(struct timer_list *t)
{}

static inline void exc3000_schedule_timer(struct exc3000_data *data)
{}

static void exc3000_shutdown_timer(void *timer)
{}

static int exc3000_read_frame(struct exc3000_data *data, u8 *buf)
{}

static int exc3000_handle_mt_event(struct exc3000_data *data)
{}

static irqreturn_t exc3000_interrupt(int irq, void *dev_id)
{}

static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request,
				       u8 request_len, u8 *response, int timeout)
{}

static ssize_t fw_version_show(struct device *dev,
			       struct device_attribute *attr, char *buf)
{}
static DEVICE_ATTR_RO(fw_version);

static ssize_t model_show(struct device *dev,
			  struct device_attribute *attr, char *buf)
{}
static DEVICE_ATTR_RO(model);

static ssize_t type_show(struct device *dev,
			  struct device_attribute *attr, char *buf)
{}
static DEVICE_ATTR_RO(type);

static struct attribute *exc3000_attrs[] =;
ATTRIBUTE_GROUPS();

static int exc3000_probe(struct i2c_client *client)
{}

static const struct i2c_device_id exc3000_id[] =;
MODULE_DEVICE_TABLE(i2c, exc3000_id);

#ifdef CONFIG_OF
static const struct of_device_id exc3000_of_match[] =;
MODULE_DEVICE_TABLE(of, exc3000_of_match);
#endif

#ifdef CONFIG_ACPI
static const struct acpi_device_id exc3000_acpi_match[] =;
MODULE_DEVICE_TABLE(acpi, exc3000_acpi_match);
#endif

static struct i2c_driver exc3000_driver =;

module_i2c_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();