summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/hotplug.c
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-07-21 13:20:20 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:56 -0800
commit8ac36475b868259c52608e2d62d0d9fb3bcd0505 (patch)
treec2d8d273eecba0e697935e9604d5f94c1efd7b44 /arch/arm/mach-tegra/hotplug.c
parent5b5f0382c47f1b697761e8406530ea7abf8f6455 (diff)
ARM: tegra: Add Tegra 3 CPU hotplug support
Change-Id: Ie43f4efdf884a916c6bc9737157091c35dc44501 Signed-off-by: Scott Williams <scwilliams@nvidia.com> DW: Split into logical changes Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com> Rebase-Id: R1f023651504a7d336f7e98921f6372bee0aa1341
Diffstat (limited to 'arch/arm/mach-tegra/hotplug.c')
-rw-r--r--arch/arm/mach-tegra/hotplug.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c
index a0b99b87cda8..36fcf591bfe7 100644
--- a/arch/arm/mach-tegra/hotplug.c
+++ b/arch/arm/mach-tegra/hotplug.c
@@ -16,6 +16,7 @@
#include <mach/iomap.h>
+#include "gic.h"
#include "sleep.h"
#define CPU_CLOCK(cpu) (0x1<<(8+cpu))
@@ -58,6 +59,18 @@ void platform_cpu_die(unsigned int cpu)
#ifdef CONFIG_ARCH_TEGRA_2x_SOC
/* Place the current CPU in reset. */
tegra2_hotplug_shutdown();
+#else
+ /* Disable GIC CPU interface for this CPU. */
+ tegra_gic_cpu_disable();
+
+ /* Tegra3 enters LPx states via WFI - do not propagate legacy IRQs
+ to CPU core to avoid fall through WFI; then GIC output will be
+ enabled, however at this time - CPU is dying - no interrupt should
+ have affinity to this CPU. */
+ tegra_gic_pass_through_disable();
+
+ /* Shut down the current CPU. */
+ tegra3_hotplug_shutdown();
#endif
/*