#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/clk.h>
#include <linux/module.h>
#include <linux/platform_data/keypad-nomadik-ske.h>
#define SKE_KPMLT …
#define SKE_KPCN …
#define SKE_KPASEN …
#define SKE_KPASON …
#define SKE_KPIMA …
#define SKE_KPICS …
#define SKE_KPICA …
#define SKE_KPRISA …
#define SKE_KEYPAD_ROW_SHIFT …
#define SKE_KPD_NUM_ROWS …
#define SKE_KPD_NUM_COLS …
#define SKE_ASR0 …
#define SKE_ASR1 …
#define SKE_ASR2 …
#define SKE_ASR3 …
#define SKE_NUM_ASRX_REGISTERS …
#define KEY_PRESSED_DELAY …
struct ske_keypad { … };
static void ske_keypad_set_bits(struct ske_keypad *keypad, u16 addr,
u8 mask, u8 data)
{ … }
static int __init ske_keypad_chip_init(struct ske_keypad *keypad)
{ … }
static void ske_keypad_report(struct ske_keypad *keypad, u8 status, int col)
{ … }
static void ske_keypad_read_data(struct ske_keypad *keypad)
{ … }
static irqreturn_t ske_keypad_irq(int irq, void *dev_id)
{ … }
static void ske_keypad_board_exit(void *data)
{ … }
static int __init ske_keypad_probe(struct platform_device *pdev)
{ … }
static int ske_keypad_suspend(struct device *dev)
{ … }
static int ske_keypad_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(ske_keypad_dev_pm_ops,
ske_keypad_suspend, ske_keypad_resume);
static struct platform_driver ske_keypad_driver = …;
module_platform_driver_probe(…);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS(…) …;