diff options
author | Rob Herring <rob.herring@calxeda.com> | 2011-09-28 22:25:31 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-10-31 09:03:24 -0400 |
commit | 4294f8baaf174c9aa57886e7ed27caf4b02578f6 (patch) | |
tree | efc535ff45a6d405a6befecd421ad1091a2d5ad6 /arch/arm/include | |
parent | 6d274309d0e64bdbdb6c50945ca2964596e8fa5a (diff) |
ARM: gic: add irq_domain support
Convert the gic interrupt controller to use irq domains in preparation
for device-tree binding and MULTI_IRQ. This allows for translation between
GIC interrupt IDs and Linux irq numbers.
The meaning of irq_offset has changed. It now is just the number of skipped
GIC interrupt IDs for the controller. It will be 16 for primary GIC and 32
for secondary GICs.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Jamie Iles <jamie@jamieiles.com>
Tested-by: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/hardware/gic.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h index 14867e12f205..43a05d90e43b 100644 --- a/arch/arm/include/asm/hardware/gic.h +++ b/arch/arm/include/asm/hardware/gic.h | |||
@@ -33,6 +33,9 @@ | |||
33 | #define GIC_DIST_SOFTINT 0xf00 | 33 | #define GIC_DIST_SOFTINT 0xf00 |
34 | 34 | ||
35 | #ifndef __ASSEMBLY__ | 35 | #ifndef __ASSEMBLY__ |
36 | #include <linux/irqdomain.h> | ||
37 | struct device_node; | ||
38 | |||
36 | extern void __iomem *gic_cpu_base_addr; | 39 | extern void __iomem *gic_cpu_base_addr; |
37 | extern struct irq_chip gic_arch_extn; | 40 | extern struct irq_chip gic_arch_extn; |
38 | 41 | ||
@@ -42,7 +45,6 @@ void gic_cascade_irq(unsigned int gic_nr, unsigned int irq); | |||
42 | void gic_raise_softirq(const struct cpumask *mask, unsigned int irq); | 45 | void gic_raise_softirq(const struct cpumask *mask, unsigned int irq); |
43 | 46 | ||
44 | struct gic_chip_data { | 47 | struct gic_chip_data { |
45 | unsigned int irq_offset; | ||
46 | void __iomem *dist_base; | 48 | void __iomem *dist_base; |
47 | void __iomem *cpu_base; | 49 | void __iomem *cpu_base; |
48 | #ifdef CONFIG_CPU_PM | 50 | #ifdef CONFIG_CPU_PM |
@@ -52,6 +54,9 @@ struct gic_chip_data { | |||
52 | u32 __percpu *saved_ppi_enable; | 54 | u32 __percpu *saved_ppi_enable; |
53 | u32 __percpu *saved_ppi_conf; | 55 | u32 __percpu *saved_ppi_conf; |
54 | #endif | 56 | #endif |
57 | #ifdef CONFIG_IRQ_DOMAIN | ||
58 | struct irq_domain domain; | ||
59 | #endif | ||
55 | unsigned int gic_irqs; | 60 | unsigned int gic_irqs; |
56 | }; | 61 | }; |
57 | #endif | 62 | #endif |