summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpuidle-t3.c
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2012-01-28 17:36:37 -0800
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-02-03 05:56:00 -0800
commitde067308cce5e1adacc29e5d2fa4459a7f380fb2 (patch)
tree9a1707e6b1540a3c9478cec4c7df6e4e68aff27b /arch/arm/mach-tegra/cpuidle-t3.c
parent5d89a46f865411446813018b5072c89845820cd1 (diff)
ARM: tegra: power: Re-factor Tegra3 secondary CPU LP2 entry
When Tegra3 secondary CPU is entering LP2, read TWD timer state into context structure, rather than separate local variables. Reviewed-on: http://git-master/r/77957 Change-Id: I237eafc50a11d535b94f334631d039ba9c4bf44b Signed-off-by: Alex Frid <afrid@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/78899 Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'arch/arm/mach-tegra/cpuidle-t3.c')
-rw-r--r--arch/arm/mach-tegra/cpuidle-t3.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-t3.c b/arch/arm/mach-tegra/cpuidle-t3.c
index 8e0122f0bed8..fb51e25e75e9 100644
--- a/arch/arm/mach-tegra/cpuidle-t3.c
+++ b/arch/arm/mach-tegra/cpuidle-t3.c
@@ -293,14 +293,15 @@ static void tegra3_idle_enter_lp2_cpu_n(struct cpuidle_device *dev,
{
#ifdef CONFIG_SMP
ktime_t entery_time;
- u32 twd_cnt;
- u32 twd_ctrl = readl(twd_base + TWD_TIMER_CONTROL);
+ struct tegra_twd_context twd_context;
unsigned long twd_rate = clk_get_rate(twd_clk);
- if ((twd_ctrl & TWD_TIMER_CONTROL_ENABLE) &&
- (twd_ctrl & TWD_TIMER_CONTROL_IT_ENABLE)) {
- twd_cnt = readl(twd_base + TWD_TIMER_COUNTER);
- request = div_u64((u64)twd_cnt * 1000000, twd_rate);
+ if (!tegra_twd_get_state(&twd_context)) {
+ if ((twd_context.twd_ctrl & TWD_TIMER_CONTROL_ENABLE) &&
+ (twd_context.twd_ctrl & TWD_TIMER_CONTROL_IT_ENABLE)) {
+ request = div_u64((u64)twd_context.twd_cnt * 1000000,
+ twd_rate);
+ }
}
if (request < tegra_lp2_exit_latency) {