#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/input/lm8333.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/slab.h>
#define LM8333_FIFO_READ …
#define LM8333_DEBOUNCE …
#define LM8333_READ_INT …
#define LM8333_ACTIVE …
#define LM8333_READ_ERROR …
#define LM8333_KEYPAD_IRQ …
#define LM8333_ERROR_IRQ …
#define LM8333_ERROR_KEYOVR …
#define LM8333_ERROR_FIFOOVR …
#define LM8333_FIFO_TRANSFER_SIZE …
#define LM8333_NUM_ROWS …
#define LM8333_NUM_COLS …
#define LM8333_ROW_SHIFT …
struct lm8333 { … };
#define LM8333_READ_RETRIES …
int lm8333_read8(struct lm8333 *lm8333, u8 cmd)
{ … }
int lm8333_write8(struct lm8333 *lm8333, u8 cmd, u8 val)
{ … }
int lm8333_read_block(struct lm8333 *lm8333, u8 cmd, u8 len, u8 *buf)
{ … }
static void lm8333_key_handler(struct lm8333 *lm8333)
{ … }
static irqreturn_t lm8333_irq_thread(int irq, void *data)
{ … }
static int lm8333_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id lm8333_id[] = …;
MODULE_DEVICE_TABLE(i2c, lm8333_id);
static struct i2c_driver lm8333_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;