aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2015-03-11 11:43:00 -0400
committerJason Cooper <jason@lakedaemon.net>2015-03-14 20:40:39 -0400
commite9479e0e832b7e59bffcebfae9953759b2c195c4 (patch)
treed2d388a2b82e3b670be00f3a66aacc91e4a64679
parentde3ce0804916a9b4f3b58e4e78727d5483c4df04 (diff)
ARM: tegra: skip gic_arch_extn setup if DT has a LIC node
If we detect that our DT has a LIC node, don't setup gic_arch_extn, and skip tegra_legacy_irq_syscore_init as well. This is only a temporary measure until that code is removed for good. Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Link: https://lkml.kernel.org/r/1426088583-15097-4-git-send-email-marc.zyngier@arm.com Signed-off-by: Jason Cooper <jason@lakedaemon.net>
-rw-r--r--arch/arm/mach-tegra/irq.c12
-rw-r--r--arch/arm/mach-tegra/tegra.c1
2 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c
index 7f87a5047140..1593c4c8b7f0 100644
--- a/arch/arm/mach-tegra/irq.c
+++ b/arch/arm/mach-tegra/irq.c
@@ -255,11 +255,22 @@ static void tegra114_gic_cpu_pm_registration(void)
255static void tegra114_gic_cpu_pm_registration(void) { } 255static void tegra114_gic_cpu_pm_registration(void) { }
256#endif 256#endif
257 257
258static const struct of_device_id tegra_ictlr_match[] __initconst = {
259 { .compatible = "nvidia,tegra20-ictlr" },
260 { .compatible = "nvidia,tegra30-ictlr" },
261 { }
262};
263
258void __init tegra_init_irq(void) 264void __init tegra_init_irq(void)
259{ 265{
260 int i; 266 int i;
261 void __iomem *distbase; 267 void __iomem *distbase;
262 268
269 if (of_find_matching_node(NULL, tegra_ictlr_match))
270 goto skip_extn_setup;
271
272 tegra_legacy_irq_syscore_init();
273
263 distbase = IO_ADDRESS(TEGRA_ARM_INT_DIST_BASE); 274 distbase = IO_ADDRESS(TEGRA_ARM_INT_DIST_BASE);
264 num_ictlrs = readl_relaxed(distbase + GIC_DIST_CTR) & 0x1f; 275 num_ictlrs = readl_relaxed(distbase + GIC_DIST_CTR) & 0x1f;
265 276
@@ -283,5 +294,6 @@ void __init tegra_init_irq(void)
283 gic_arch_extn.irq_set_wake = tegra_set_wake; 294 gic_arch_extn.irq_set_wake = tegra_set_wake;
284 gic_arch_extn.flags = IRQCHIP_MASK_ON_SUSPEND; 295 gic_arch_extn.flags = IRQCHIP_MASK_ON_SUSPEND;
285 296
297skip_extn_setup:
286 tegra114_gic_cpu_pm_registration(); 298 tegra114_gic_cpu_pm_registration();
287} 299}
diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c
index 914341bcef25..861d88486dbe 100644
--- a/arch/arm/mach-tegra/tegra.c
+++ b/arch/arm/mach-tegra/tegra.c
@@ -82,7 +82,6 @@ static void __init tegra_dt_init_irq(void)
82{ 82{
83 tegra_init_irq(); 83 tegra_init_irq();
84 irqchip_init(); 84 irqchip_init();
85 tegra_legacy_irq_syscore_init();
86} 85}
87 86
88static void __init tegra_dt_init(void) 87static void __init tegra_dt_init(void)