6 #include <linux/sched.h>
7 #include <linux/module.h>
8 #include <linux/kernel.h>
18 #define INTC_ICR1 0xA4140010UL
22 unsigned int irq = data->
irq;
33 unsigned int irq = data->
irq;
42 static void hd64461_mask_and_ack_irq(
struct irq_data *
data)
44 hd64461_mask_irq(data);
46 #ifdef CONFIG_HD64461_ENABLER
52 static struct irq_chip hd64461_irq_chip = {
53 .name =
"HD64461-IRQ",
54 .irq_mask = hd64461_mask_irq,
55 .irq_mask_ack = hd64461_mask_and_ack_irq,
56 .irq_unmask = hd64461_unmask_irq,
59 static void hd64461_irq_demux(
unsigned int irq,
struct irq_desc *
desc)
66 for (; intv; intv >>= 1, ext_irq++) {
79 "HD64461 configured at 0x%x on irq %d(mapped into %d to %d)\n",
84 #if defined(CONFIG_CPU_SUBTYPE_SH7709)
91 pr_err(
"%s: failed hooking irqs for HD64461\n", __func__);
95 for (i = 0; i < 16; i++)
96 irq_set_chip_and_handler(irq_base + i, &hd64461_irq_chip,
99 irq_set_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux);
102 #ifdef CONFIG_HD64461_ENABLER