diff options
author | Thomas Abraham <thomas.abraham@linaro.org> | 2011-12-15 15:13:03 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2011-12-26 22:33:33 +0800 |
commit | ff222795a1eac167a529038ddbe790244b5af693 (patch) | |
tree | 6e77b207f03c4ac9e0d99df294659172758f0ca5 /arch/arm/mach-exynos | |
parent | 697fb331dc1dff200f6357f9373892339a9431e9 (diff) |
ARM: EXYNOS: Enable conversion of GIC dt irq specifier to linux virq
Enable conversion of device tree interrupt specifier to linux
virq domain for GIC controller.
Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r-- | arch/arm/mach-exynos/cpu.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/arm/mach-exynos/cpu.c b/arch/arm/mach-exynos/cpu.c index bb7290b3a32..b710ac352fc 100644 --- a/arch/arm/mach-exynos/cpu.c +++ b/arch/arm/mach-exynos/cpu.c @@ -10,6 +10,9 @@ #include <linux/sched.h> #include <linux/sysdev.h> +#include <linux/dma-mapping.h> +#include <linux/of.h> +#include <linux/of_irq.h> #include <asm/cacheflush.h> #include <asm/mach/map.h> @@ -242,13 +245,26 @@ static void exynos4_gic_irq_fix_base(struct irq_data *d) (gic_bank_offset * smp_processor_id()); } +#ifdef CONFIG_OF +static const struct of_device_id exynos4_dt_irq_match[] = { + { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, + {}, +}; +#endif + void __init exynos4_init_irq(void) { int irq; gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000; - gic_init(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU); + if (!of_have_populated_dt()) + gic_init(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU); +#ifdef CONFIG_OF + else + of_irq_init(exynos4_dt_irq_match); +#endif + gic_arch_extn.irq_eoi = exynos4_gic_irq_fix_base; gic_arch_extn.irq_unmask = exynos4_gic_irq_fix_base; gic_arch_extn.irq_mask = exynos4_gic_irq_fix_base; |