#define pr_fmt(fmt) …
#include <linux/bitops.h>
#include <linux/clk.h>
#include <linux/irq.h>
#include <linux/irqchip.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/reset.h>
#include <linux/spinlock.h>
#define STARFIVE_INTC_SRC0_CLEAR …
#define STARFIVE_INTC_SRC0_MASK …
#define STARFIVE_INTC_SRC0_INT …
#define STARFIVE_INTC_SRC_IRQ_NUM …
struct starfive_irq_chip { … };
static void starfive_intc_bit_set(struct starfive_irq_chip *irqc,
u32 reg, u32 bit_mask)
{ … }
static void starfive_intc_bit_clear(struct starfive_irq_chip *irqc,
u32 reg, u32 bit_mask)
{ … }
static void starfive_intc_unmask(struct irq_data *d)
{ … }
static void starfive_intc_mask(struct irq_data *d)
{ … }
static struct irq_chip intc_dev = …;
static int starfive_intc_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops starfive_intc_domain_ops = …;
static void starfive_intc_irq_handler(struct irq_desc *desc)
{ … }
static int __init starfive_intc_init(struct device_node *intc,
struct device_node *parent)
{ … }
IRQCHIP_PLATFORM_DRIVER_BEGIN(starfive_intc)
IRQCHIP_MATCH("starfive,jh8100-intc", starfive_intc_init)
IRQCHIP_PLATFORM_DRIVER_END(starfive_intc)
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;