summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpuidle-t3.c
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2011-09-27 22:33:50 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:09 -0800
commit36dbc27d0dd8e6a44758ce1631a45fb0458421e8 (patch)
tree7caaf060743f23f504eec686dc8329f4af999fe2 /arch/arm/mach-tegra/cpuidle-t3.c
parentf718f636a3c94b1cec48f69c0fd75e96e89ddc64 (diff)
ARM: tegra: power: Clean Tegra3 LP2 entry procedure
- Do not save/restore local timer configuration across secondary CPU LP2 state. It is always preserved, since local timer is neither power gated nor reset when secondary CPU is in LP2. - Do not configure external timer for secondary CPU wake up, since we can use local timer instead. Moreover, in current code external timer interrupt is registered too late on secondary CPU after it is brought on-line, so the timer may not always be able to wake CPU up from LP2. Change-Id: I864e9910fe7112bbce3ea4dbaef12be4b42fb5dc Reviewed-on: http://git-master/r/55070 Tested-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> Rebase-Id: R3407f05d200d81e29994daf278170d3619714bef
Diffstat (limited to 'arch/arm/mach-tegra/cpuidle-t3.c')
-rw-r--r--arch/arm/mach-tegra/cpuidle-t3.c12
1 files changed, 0 insertions, 12 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-t3.c b/arch/arm/mach-tegra/cpuidle-t3.c
index 9393ea3a51da..e8e552c7717c 100644
--- a/arch/arm/mach-tegra/cpuidle-t3.c
+++ b/arch/arm/mach-tegra/cpuidle-t3.c
@@ -268,9 +268,6 @@ static void tegra3_idle_enter_lp2_cpu_n(struct cpuidle_device *dev,
struct cpuidle_state *state, s64 request)
{
#ifdef CONFIG_SMP
- s64 sleep_time = request - tegra_lp2_exit_latency;
- struct tegra_twd_context twd_context;
-
if (request < tegra_lp2_exit_latency) {
/*
* Not enough time left to enter LP2
@@ -279,8 +276,6 @@ static void tegra3_idle_enter_lp2_cpu_n(struct cpuidle_device *dev,
return;
}
- tegra_lp2_set_trigger(sleep_time);
-
idle_stats.tear_down_count[cpu_number(dev->cpu)]++;
trace_power_start(POWER_CSTATE, 2, dev->cpu);
@@ -289,16 +284,9 @@ static void tegra3_idle_enter_lp2_cpu_n(struct cpuidle_device *dev,
tegra_cpu_wake_by_time[dev->cpu] = ktime_to_us(ktime_get()) + request;
smp_wmb();
- tegra_twd_suspend(&twd_context);
-
tegra3_sleep_cpu_secondary(PLAT_PHYS_OFFSET - PAGE_OFFSET);
tegra_cpu_wake_by_time[dev->cpu] = LLONG_MAX;
-
- tegra_twd_resume(&twd_context);
-
- if (sleep_time)
- tegra_lp2_set_trigger(0);
#endif
}