diff options
author | Scott Williams <scwilliams@nvidia.com> | 2011-07-21 14:29:58 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:46:57 -0800 |
commit | f68659188e7e7db84db6499813ea7a0f050d5d62 (patch) | |
tree | 08096f43960b637f7510aeaca71d82f6e135a252 /arch/arm/mach-tegra/pm-t3.c | |
parent | 4f363334677b0323dea4d5c3c13bdc090455de03 (diff) |
ARM: tegra: power: Fix CPU complex suspend/resume
- Invoke cpu_pm_enter()/cpu_pm_exit() to save/restore the GIC
processor interface registers for the last processor standing from
the cluster control interface.
- Disable the GIC processor interface on the last processor standing
before shutting down the CPU complex so that wakeup interrupts get
routed from the legacy interrupt controller to the flow controller.
- For Tegra3 enable GIC pass-through mode to prevent WFI failures.
Change-Id: Ia866b17bef47fc8e9e75d4e353394b2d1a09259c
Signed-off-by: Scott Williams <scwilliams@nvidia.com>
DW: Split into logical changes
Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com>
Rebase-Id: R249fb53a2622218a7128646d68d8a3552268b4f1
Diffstat (limited to 'arch/arm/mach-tegra/pm-t3.c')
-rw-r--r-- | arch/arm/mach-tegra/pm-t3.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/pm-t3.c b/arch/arm/mach-tegra/pm-t3.c index 437a2774a3a5..5f869a124053 100644 --- a/arch/arm/mach-tegra/pm-t3.c +++ b/arch/arm/mach-tegra/pm-t3.c @@ -26,6 +26,8 @@ #include <mach/gpio.h> #include <mach/iomap.h> #include <mach/irqs.h> + +#include <asm/cpu_pm.h> #include <asm/hardware/gic.h> #include "clock.h" @@ -310,8 +312,11 @@ int tegra_cluster_control(unsigned int us, unsigned int flags) if (us) tegra_lp2_set_trigger(0); - } else + } else { + cpu_pm_enter(); tegra_idle_lp2_last(0, flags); + cpu_pm_exit(); + } local_irq_enable(); DEBUG_CLUSTER(("%s: %s\r\n", __func__, is_lp_cluster() ? "LP" : "G")); |