#include <linux/clk.h>
#include <linux/interrupt.h>
#include <linux/irqchip.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/mfd/ingenic-tcu.h>
#include <linux/mfd/syscon.h>
#include <linux/of_irq.h>
#include <linux/regmap.h>
struct ingenic_tcu { … };
static void ingenic_tcu_intc_cascade(struct irq_desc *desc)
{ … }
static void ingenic_tcu_gc_unmask_enable_reg(struct irq_data *d)
{ … }
static void ingenic_tcu_gc_mask_disable_reg(struct irq_data *d)
{ … }
static void ingenic_tcu_gc_mask_disable_reg_and_ack(struct irq_data *d)
{ … }
static int __init ingenic_tcu_irq_init(struct device_node *np,
struct device_node *parent)
{ … }
IRQCHIP_DECLARE(jz4740_tcu_irq, "ingenic,jz4740-tcu", ingenic_tcu_irq_init);
IRQCHIP_DECLARE(jz4725b_tcu_irq, "ingenic,jz4725b-tcu", ingenic_tcu_irq_init);
IRQCHIP_DECLARE(jz4760_tcu_irq, "ingenic,jz4760-tcu", ingenic_tcu_irq_init);
IRQCHIP_DECLARE(jz4770_tcu_irq, "ingenic,jz4770-tcu", ingenic_tcu_irq_init);
IRQCHIP_DECLARE(x1000_tcu_irq, "ingenic,x1000-tcu", ingenic_tcu_irq_init);