16 #include <linux/list.h>
19 #include <mach/hardware.h>
22 static u32 iop33x_mask0;
23 static u32 iop33x_mask1;
25 static void intctl0_write(
u32 val)
27 asm volatile(
"mcr p6, 0, %0, c0, c0, 0" : :
"r" (
val));
30 static void intctl1_write(
u32 val)
32 asm volatile(
"mcr p6, 0, %0, c1, c0, 0" : :
"r" (
val));
35 static void intstr0_write(
u32 val)
37 asm volatile(
"mcr p6, 0, %0, c2, c0, 0" : :
"r" (
val));
40 static void intstr1_write(
u32 val)
42 asm volatile(
"mcr p6, 0, %0, c3, c0, 0" : :
"r" (
val));
45 static void intbase_write(
u32 val)
47 asm volatile(
"mcr p6, 0, %0, c12, c0, 0" : :
"r" (
val));
50 static void intsize_write(
u32 val)
52 asm volatile(
"mcr p6, 0, %0, c13, c0, 0" : :
"r" (
val));
58 iop33x_mask0 &= ~(1 << d->
irq);
59 intctl0_write(iop33x_mask0);
65 iop33x_mask1 &= ~(1 << (d->
irq - 32));
66 intctl1_write(iop33x_mask1);
72 iop33x_mask0 |= 1 << d->
irq;
73 intctl0_write(iop33x_mask0);
79 iop33x_mask1 |= (1 << (d->
irq - 32));
80 intctl1_write(iop33x_mask1);
85 .irq_ack = iop33x_irq_mask1,
86 .irq_mask = iop33x_irq_mask1,
87 .irq_unmask = iop33x_irq_unmask1,
92 .irq_ack = iop33x_irq_mask2,
93 .irq_mask = iop33x_irq_mask2,
94 .irq_unmask = iop33x_irq_unmask2,
109 if (machine_is_iq80331())
112 for (i = 0; i <
NR_IRQS; i++) {
113 irq_set_chip_and_handler(i,
114 (i < 32) ? &iop33x_irqchip1 : &iop33x_irqchip2,