summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/cpuidle-t2.c4
-rw-r--r--arch/arm/mach-tegra/cpuidle-t3.c3
-rw-r--r--arch/arm/mach-tegra/cpuidle.c6
3 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-t2.c b/arch/arm/mach-tegra/cpuidle-t2.c
index 947a0038fb8e..8428bc4cfd3e 100644
--- a/arch/arm/mach-tegra/cpuidle-t2.c
+++ b/arch/arm/mach-tegra/cpuidle-t2.c
@@ -221,12 +221,16 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
idle_stats.lp2_count++;
idle_stats.lp2_count_bin[bin]++;
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
+
if (tegra_idle_lp2_last(sleep_time, 0) == 0)
sleep_completed = true;
else {
int irq = tegra_gic_pending_interrupt();
idle_stats.lp2_int_count[irq]++;
}
+
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
}
for_each_online_cpu(i) {
diff --git a/arch/arm/mach-tegra/cpuidle-t3.c b/arch/arm/mach-tegra/cpuidle-t3.c
index 34bb3d0b13c7..9393ea3a51da 100644
--- a/arch/arm/mach-tegra/cpuidle-t3.c
+++ b/arch/arm/mach-tegra/cpuidle-t3.c
@@ -214,6 +214,7 @@ static void tegra3_idle_enter_lp2_cpu_0(struct cpuidle_device *dev,
idle_stats.lp2_count_bin[bin]++;
trace_power_start(POWER_CSTATE, 2, dev->cpu);
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
if (tegra_idle_lp2_last(sleep_time, 0) == 0)
sleep_completed = true;
@@ -221,6 +222,8 @@ static void tegra3_idle_enter_lp2_cpu_0(struct cpuidle_device *dev,
int irq = tegra_gic_pending_interrupt();
idle_stats.lp2_int_count[irq]++;
}
+
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
}
#ifdef CONFIG_SMP
diff --git a/arch/arm/mach-tegra/cpuidle.c b/arch/arm/mach-tegra/cpuidle.c
index 92fbc61f469d..3a2452104f46 100644
--- a/arch/arm/mach-tegra/cpuidle.c
+++ b/arch/arm/mach-tegra/cpuidle.c
@@ -116,13 +116,7 @@ static int tegra_idle_enter_lp2(struct cpuidle_device *dev,
enter = ktime_get();
tegra_cpu_idle_stats_lp2_ready(dev->cpu);
-
- /* Shut down the CPU local timer and switch timekeeping to the
- global system timer. */
- clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
tegra_idle_lp2(dev, state);
- /* Switch timekeeping back to the CPU local timer. */
- clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
exit = ktime_sub(ktime_get(), enter);
us = ktime_to_us(exit);