[PATCH 1/3] integrator: fix the IRQ masks on the Integrator/CP
Linus Walleij
linus.walleij at linaro.org
Wed Apr 11 18:43:43 EDT 2012
The mask for the PIC FPGA IRQ controller was just wrong, so
convert all the IRQ controllers to use the same, correct
design pattern to produce the valid IRQ mask. Also use the
IRQ_FOO_END macro consistently so this looks coherent.
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
arch/arm/mach-integrator/include/mach/irqs.h | 2 +-
arch/arm/mach-integrator/integrator_cp.c | 9 ++++-----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-integrator/include/mach/irqs.h b/arch/arm/mach-integrator/include/mach/irqs.h
index a19a1a2..283931e 100644
--- a/arch/arm/mach-integrator/include/mach/irqs.h
+++ b/arch/arm/mach-integrator/include/mach/irqs.h
@@ -52,7 +52,7 @@
#define IRQ_CP_CPPLDINT 26
#define IRQ_CP_ETHINT 27
#define IRQ_CP_TSPENINT 28
-#define IRQ_PIC_END 31
+#define IRQ_PIC_END 28
#define IRQ_CIC_START 32
#define IRQ_CM_SOFTINT 32
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 48a115a..2172f4c 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -163,10 +163,10 @@ static struct fpga_irq_data sic_irq_data = {
static void __init intcp_init_irq(void)
{
- u32 pic_mask, sic_mask;
+ u32 pic_mask, cic_mask, sic_mask;
- pic_mask = ~((~0u) << (11 - IRQ_PIC_START));
- pic_mask |= (~((~0u) << (29 - 22))) << 22;
+ pic_mask = ~((~0u) << (1 + IRQ_PIC_END - IRQ_PIC_START));
+ cic_mask = ~((~0u) << (1 + IRQ_CIC_END - IRQ_CIC_START));
sic_mask = ~((~0u) << (1 + IRQ_SIC_END - IRQ_SIC_START));
/*
@@ -181,8 +181,7 @@ static void __init intcp_init_irq(void)
fpga_irq_init(-1, pic_mask, &pic_irq_data);
- fpga_irq_init(-1, ~((~0u) << (1 + IRQ_CIC_END - IRQ_CIC_START)),
- &cic_irq_data);
+ fpga_irq_init(-1, cic_mask, &cic_irq_data);
fpga_irq_init(IRQ_CP_CPPLDINT, sic_mask, &sic_irq_data);
}
--
1.7.7.6
More information about the linux-arm-kernel
mailing list