#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/mfd/mt6323/registers.h>
#include <linux/mfd/mt6331/registers.h>
#include <linux/mfd/mt6357/registers.h>
#include <linux/mfd/mt6358/registers.h>
#include <linux/mfd/mt6397/core.h>
#include <linux/mfd/mt6397/registers.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#define MTK_PMIC_RST_DU_MASK …
#define MTK_PMIC_PWRKEY_RST …
#define MTK_PMIC_HOMEKEY_RST …
#define MTK_PMIC_MT6331_RST_DU_MASK …
#define MTK_PMIC_MT6331_PWRKEY_RST …
#define MTK_PMIC_MT6331_HOMEKEY_RST …
#define MTK_PMIC_PWRKEY_INDEX …
#define MTK_PMIC_HOMEKEY_INDEX …
#define MTK_PMIC_MAX_KEY_COUNT …
struct mtk_pmic_keys_regs { … };
#define MTK_PMIC_KEYS_REGS(_deb_reg, _deb_mask, \
_intsel_reg, _intsel_mask, _rst_mask) …
struct mtk_pmic_regs { … };
static const struct mtk_pmic_regs mt6397_regs = …;
static const struct mtk_pmic_regs mt6323_regs = …;
static const struct mtk_pmic_regs mt6331_regs = …;
static const struct mtk_pmic_regs mt6357_regs = …;
static const struct mtk_pmic_regs mt6358_regs = …;
struct mtk_pmic_keys_info { … };
struct mtk_pmic_keys { … };
enum mtk_pmic_keys_lp_mode { … };
static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,
const struct mtk_pmic_regs *regs)
{ … }
static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data)
{ … }
static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,
struct mtk_pmic_keys_info *info)
{ … }
static int mtk_pmic_keys_suspend(struct device *dev)
{ … }
static int mtk_pmic_keys_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(mtk_pmic_keys_pm_ops, mtk_pmic_keys_suspend,
mtk_pmic_keys_resume);
static const struct of_device_id of_mtk_pmic_keys_match_tbl[] = …;
MODULE_DEVICE_TABLE(of, of_mtk_pmic_keys_match_tbl);
static int mtk_pmic_keys_probe(struct platform_device *pdev)
{ … }
static struct platform_driver pmic_keys_pdrv = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;