aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-versatile/include
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-04-28 09:33:47 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-05-04 11:53:37 -0400
commit3108e6ab21a9b9dbd88f0b2ff99f73e95b8b1580 (patch)
tree9e87e1e4196849090103317d109dc95ba9d159f8 /arch/arm/plat-versatile/include
parent69964ea4c7b68c9399f7977aa5b9aa6539a6a98a (diff)
ARM: 7389/2: plat-versatile: modernize FPGA IRQ controller
This does two things to the FPGA IRQ controller in the versatile family: - Convert to MULTI_IRQ_HANDLER so we can drop the entry macro from the Integrator. The C IRQ handler was inspired from arch/arm/common/vic.c, recent bug discovered in this handler was accounted for. - Convert to using IRQ domains so we can get rid of the NO_IRQ mess and proceed with device tree and such stuff. As part of the exercise, bump all the low IRQ numbers on the Integrator PIC to start from 1 rather than 0, since IRQ 0 is now NO_IRQ. The Linux IRQ numbers are thus entirely decoupled from the hardware IRQ numbers in this controller. I was unable to split this patch. The main reason is the half-done conversion to device tree in Versatile. Tested on Integrator/AP and Integrator/CP. Cc: Grant Likely <grant.likely@secretlab.ca> Acked-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/plat-versatile/include')
-rw-r--r--arch/arm/plat-versatile/include/plat/fpga-irq.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/arm/plat-versatile/include/plat/fpga-irq.h b/arch/arm/plat-versatile/include/plat/fpga-irq.h
index 627fafd1e595..91bcfb67551d 100644
--- a/arch/arm/plat-versatile/include/plat/fpga-irq.h
+++ b/arch/arm/plat-versatile/include/plat/fpga-irq.h
@@ -1,12 +1,11 @@
1#ifndef PLAT_FPGA_IRQ_H 1#ifndef PLAT_FPGA_IRQ_H
2#define PLAT_FPGA_IRQ_H 2#define PLAT_FPGA_IRQ_H
3 3
4struct fpga_irq_data { 4struct device_node;
5 void __iomem *base; 5struct pt_regs;
6 unsigned int irq_start;
7 struct irq_chip chip;
8};
9 6
10void fpga_irq_init(int, u32, struct fpga_irq_data *); 7void fpga_handle_irq(struct pt_regs *regs);
8void fpga_irq_init(void __iomem *, const char *, int, int, u32,
9 struct device_node *node);
11 10
12#endif 11#endif