#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/input.h>
#include <linux/irq.h>
#include <linux/slab.h>
#include <linux/platform_data/mcs.h>
#include <linux/pm.h>
#define MCS5000_TOUCHKEY_STATUS …
#define MCS5000_TOUCHKEY_STATUS_PRESS …
#define MCS5000_TOUCHKEY_FW …
#define MCS5000_TOUCHKEY_BASE_VAL …
#define MCS5080_TOUCHKEY_STATUS …
#define MCS5080_TOUCHKEY_STATUS_PRESS …
#define MCS5080_TOUCHKEY_FW …
#define MCS5080_TOUCHKEY_BASE_VAL …
enum mcs_touchkey_type { … };
struct mcs_touchkey_chip { … };
struct mcs_touchkey_data { … };
static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
{ … }
static void mcs_touchkey_poweroff(void *data)
{ … }
static int mcs_touchkey_probe(struct i2c_client *client)
{ … }
static void mcs_touchkey_shutdown(struct i2c_client *client)
{ … }
static int mcs_touchkey_suspend(struct device *dev)
{ … }
static int mcs_touchkey_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(mcs_touchkey_pm_ops,
mcs_touchkey_suspend, mcs_touchkey_resume);
static const struct i2c_device_id mcs_touchkey_id[] = …;
MODULE_DEVICE_TABLE(i2c, mcs_touchkey_id);
static struct i2c_driver mcs_touchkey_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;