diff options
-rw-r--r-- | arch/arm/mach-tegra/cpuidle-t2.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-tegra/cpuidle-t3.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-tegra/cpuidle.c | 6 |
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); |