#include <linux/err.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/irqdomain.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#define IRQC_NUM_IRQ …
#define ICR0 …
#define ICR0_NMIL …
#define ICR0_NMIE …
#define ICR0_NMIF …
#define ICR1 …
#define ICR1_IRQS(n, sense) …
#define ICR1_IRQS_LEVEL_LOW …
#define ICR1_IRQS_EDGE_FALLING …
#define ICR1_IRQS_EDGE_RISING …
#define ICR1_IRQS_EDGE_BOTH …
#define ICR1_IRQS_MASK(n) …
#define IRQRR …
struct rza1_irqc_priv { … };
static struct rza1_irqc_priv *irq_data_to_priv(struct irq_data *data)
{ … }
static void rza1_irqc_eoi(struct irq_data *d)
{ … }
static int rza1_irqc_set_type(struct irq_data *d, unsigned int type)
{ … }
static int rza1_irqc_alloc(struct irq_domain *domain, unsigned int virq,
unsigned int nr_irqs, void *arg)
{ … }
static int rza1_irqc_translate(struct irq_domain *domain,
struct irq_fwspec *fwspec, unsigned long *hwirq,
unsigned int *type)
{ … }
static const struct irq_domain_ops rza1_irqc_domain_ops = …;
static int rza1_irqc_parse_map(struct rza1_irqc_priv *priv,
struct device_node *gic_node)
{ … }
static int rza1_irqc_probe(struct platform_device *pdev)
{ … }
static void rza1_irqc_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id rza1_irqc_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, rza1_irqc_dt_ids);
static struct platform_driver rza1_irqc_device_driver = …;
static int __init rza1_irqc_init(void)
{ … }
postcore_initcall(rza1_irqc_init);
static void __exit rza1_irqc_exit(void)
{ … }
module_exit(rza1_irqc_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;