#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/input.h>
#define QT2160_VALID_CHIPID …
#define QT2160_CMD_CHIPID …
#define QT2160_CMD_CODEVER …
#define QT2160_CMD_GSTAT …
#define QT2160_CMD_KEYS3 …
#define QT2160_CMD_KEYS4 …
#define QT2160_CMD_SLIDE …
#define QT2160_CMD_GPIOS …
#define QT2160_CMD_SUBVER …
#define QT2160_CMD_CALIBRATE …
#define QT2160_CMD_DRIVE_X …
#define QT2160_CMD_PWMEN_X …
#define QT2160_CMD_PWM_DUTY …
#define QT2160_NUM_LEDS_X …
#define QT2160_CYCLE_INTERVAL …
static unsigned char qt2160_key2code[] = …;
#ifdef CONFIG_LEDS_CLASS
struct qt2160_led { … };
#endif
struct qt2160_data { … };
static int qt2160_read(struct i2c_client *client, u8 reg);
static int qt2160_write(struct i2c_client *client, u8 reg, u8 data);
#ifdef CONFIG_LEDS_CLASS
static int qt2160_led_set(struct led_classdev *cdev,
enum led_brightness value)
{ … }
#endif
static int qt2160_read_block(struct i2c_client *client,
u8 inireg, u8 *buffer, unsigned int count)
{ … }
static void qt2160_get_key_matrix(struct input_dev *input)
{ … }
static irqreturn_t qt2160_irq(int irq, void *data)
{ … }
static int qt2160_read(struct i2c_client *client, u8 reg)
{ … }
static int qt2160_write(struct i2c_client *client, u8 reg, u8 data)
{ … }
#ifdef CONFIG_LEDS_CLASS
static int qt2160_register_leds(struct qt2160_data *qt2160)
{ … }
#else
static inline int qt2160_register_leds(struct qt2160_data *qt2160)
{
return 0;
}
#endif
static bool qt2160_identify(struct i2c_client *client)
{ … }
static int qt2160_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id qt2160_idtable[] = …;
MODULE_DEVICE_TABLE(i2c, qt2160_idtable);
static struct i2c_driver qt2160_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;