diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2015-03-11 11:43:00 -0400 |
---|---|---|
committer | Jason Cooper <jason@lakedaemon.net> | 2015-03-14 20:40:39 -0400 |
commit | e9479e0e832b7e59bffcebfae9953759b2c195c4 (patch) | |
tree | d2d388a2b82e3b670be00f3a66aacc91e4a64679 | |
parent | de3ce0804916a9b4f3b58e4e78727d5483c4df04 (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.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-tegra/tegra.c | 1 |
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) | |||
255 | static void tegra114_gic_cpu_pm_registration(void) { } | 255 | static void tegra114_gic_cpu_pm_registration(void) { } |
256 | #endif | 256 | #endif |
257 | 257 | ||
258 | static const struct of_device_id tegra_ictlr_match[] __initconst = { | ||
259 | { .compatible = "nvidia,tegra20-ictlr" }, | ||
260 | { .compatible = "nvidia,tegra30-ictlr" }, | ||
261 | { } | ||
262 | }; | ||
263 | |||
258 | void __init tegra_init_irq(void) | 264 | void __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 | ||
297 | skip_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 | ||
88 | static void __init tegra_dt_init(void) | 87 | static void __init tegra_dt_init(void) |