#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/irqchip.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/syscore_ops.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#define MCHP_EIC_GFCS …
#define MCHP_EIC_SCFG(x) …
#define MCHP_EIC_SCFG_EN …
#define MCHP_EIC_SCFG_LVL …
#define MCHP_EIC_SCFG_POL …
#define MCHP_EIC_NIRQ …
struct mchp_eic { … };
static struct mchp_eic *eic;
static void mchp_eic_irq_mask(struct irq_data *d)
{ … }
static void mchp_eic_irq_unmask(struct irq_data *d)
{ … }
static int mchp_eic_irq_set_type(struct irq_data *d, unsigned int type)
{ … }
static int mchp_eic_irq_set_wake(struct irq_data *d, unsigned int on)
{ … }
static int mchp_eic_irq_suspend(void)
{ … }
static void mchp_eic_irq_resume(void)
{ … }
static struct syscore_ops mchp_eic_syscore_ops = …;
static struct irq_chip mchp_eic_chip = …;
static int mchp_eic_domain_alloc(struct irq_domain *domain, unsigned int virq,
unsigned int nr_irqs, void *data)
{ … }
static const struct irq_domain_ops mchp_eic_domain_ops = …;
static int mchp_eic_init(struct device_node *node, struct device_node *parent)
{ … }
IRQCHIP_PLATFORM_DRIVER_BEGIN(mchp_eic)
IRQCHIP_MATCH("microchip,sama7g5-eic", mchp_eic_init)
IRQCHIP_PLATFORM_DRIVER_END(mchp_eic)
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;