#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/device.h>
#include <linux/mfd/intel_soc_pmic.h>
#include <linux/mfd/intel_soc_pmic_mrfld.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_wakeirq.h>
#include <linux/slab.h>
#define BCOVE_PBSTATUS …
#define BCOVE_PBSTATUS_PBLVL …
static irqreturn_t mrfld_pwrbtn_interrupt(int irq, void *dev_id)
{ … }
static int mrfld_pwrbtn_probe(struct platform_device *pdev)
{ … }
static void mrfld_pwrbtn_remove(struct platform_device *pdev)
{ … }
static const struct platform_device_id mrfld_pwrbtn_id_table[] = …;
MODULE_DEVICE_TABLE(platform, mrfld_pwrbtn_id_table);
static struct platform_driver mrfld_pwrbtn_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;