#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/pm.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/input/matrix_keypad.h>
#define DRV_NAME …
#define LPC32XX_KS_DEB(x) …
#define LPC32XX_KS_STATE_COND(x) …
#define LPC32XX_KS_IRQ(x) …
#define LPC32XX_KS_SCAN_CTL(x) …
#define LPC32XX_KS_FAST_TST(x) …
#define LPC32XX_KS_MATRIX_DIM(x) …
#define LPC32XX_KS_DATA(x, y) …
#define LPC32XX_KSCAN_DEB_NUM_DEB_PASS(n) …
#define LPC32XX_KSCAN_SCOND_IN_IDLE …
#define LPC32XX_KSCAN_SCOND_IN_SCANONCE …
#define LPC32XX_KSCAN_SCOND_IN_IRQGEN …
#define LPC32XX_KSCAN_SCOND_IN_SCAN_MATRIX …
#define LPC32XX_KSCAN_IRQ_PENDING_CLR …
#define LPC32XX_KSCAN_SCTRL_SCAN_DELAY(n) …
#define LPC32XX_KSCAN_FTST_FORCESCANONCE …
#define LPC32XX_KSCAN_FTST_USE32K_CLK …
#define LPC32XX_KSCAN_MSEL_SELECT(n) …
struct lpc32xx_kscan_drv { … };
static void lpc32xx_mod_states(struct lpc32xx_kscan_drv *kscandat, int col)
{ … }
static irqreturn_t lpc32xx_kscan_irq(int irq, void *dev_id)
{ … }
static int lpc32xx_kscan_open(struct input_dev *dev)
{ … }
static void lpc32xx_kscan_close(struct input_dev *dev)
{ … }
static int lpc32xx_parse_dt(struct device *dev,
struct lpc32xx_kscan_drv *kscandat)
{ … }
static int lpc32xx_kscan_probe(struct platform_device *pdev)
{ … }
static int lpc32xx_kscan_suspend(struct device *dev)
{ … }
static int lpc32xx_kscan_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(lpc32xx_kscan_pm_ops, lpc32xx_kscan_suspend,
lpc32xx_kscan_resume);
static const struct of_device_id lpc32xx_kscan_match[] = …;
MODULE_DEVICE_TABLE(of, lpc32xx_kscan_match);
static struct platform_driver lpc32xx_kscan_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;