#include <linux/device.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/pm_wakeirq.h>
#include <linux/regmap.h>
#define BBNSM_CTRL …
#define BBNSM_INT_EN …
#define BBNSM_EVENTS …
#define BBNSM_PAD_CTRL …
#define BBNSM_BTN_PRESSED …
#define BBNSM_PWR_ON …
#define BBNSM_BTN_OFF …
#define BBNSM_EMG_OFF …
#define BBNSM_PWRKEY_EVENTS …
#define BBNSM_DP_EN …
#define DEBOUNCE_TIME …
#define REPEAT_INTERVAL …
struct bbnsm_pwrkey { … };
static void bbnsm_pwrkey_check_for_events(struct timer_list *t)
{ … }
static irqreturn_t bbnsm_pwrkey_interrupt(int irq, void *dev_id)
{ … }
static void bbnsm_pwrkey_act(void *pdata)
{ … }
static int bbnsm_pwrkey_probe(struct platform_device *pdev)
{ … }
static int __maybe_unused bbnsm_pwrkey_suspend(struct device *dev)
{ … }
static int __maybe_unused bbnsm_pwrkey_resume(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(bbnsm_pwrkey_pm_ops, bbnsm_pwrkey_suspend,
bbnsm_pwrkey_resume);
static const struct of_device_id bbnsm_pwrkey_ids[] = …;
MODULE_DEVICE_TABLE(of, bbnsm_pwrkey_ids);
static struct platform_driver bbnsm_pwrkey_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;