#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/irqchip/irq-madera.h>
#include <linux/mfd/madera/core.h>
#include <linux/mfd/madera/pdata.h>
#include <linux/mfd/madera/registers.h>
#define MADERA_IRQ(_irq, _reg) …
static const struct regmap_irq madera_irqs[MADERA_NUM_IRQ] = …;
static const struct regmap_irq_chip madera_irq_chip = …;
#ifdef CONFIG_PM_SLEEP
static int madera_suspend(struct device *dev)
{ … }
static int madera_suspend_noirq(struct device *dev)
{ … }
static int madera_resume_noirq(struct device *dev)
{ … }
static int madera_resume(struct device *dev)
{ … }
#endif
static const struct dev_pm_ops madera_irq_pm_ops = …;
static int madera_irq_probe(struct platform_device *pdev)
{ … }
static void madera_irq_remove(struct platform_device *pdev)
{ … }
static struct platform_driver madera_irq_driver = …;
module_platform_driver(…) …;
MODULE_SOFTDEP(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;