#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/reboot.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/input.h>
#include <linux/slab.h>
#define MAX_HELD_TIME …
static irqreturn_t hi65xx_power_press_isr(int irq, void *q)
{ … }
static irqreturn_t hi65xx_power_release_isr(int irq, void *q)
{ … }
static irqreturn_t hi65xx_restart_toggle_isr(int irq, void *q)
{ … }
static const struct { … } hi65xx_irq_info[] = …;
static int hi65xx_powerkey_probe(struct platform_device *pdev)
{ … }
static struct platform_driver hi65xx_powerkey_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;