summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpuidle-tegra30.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/cpuidle-tegra30.c')
-rw-r--r--arch/arm/mach-tegra/cpuidle-tegra30.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-tegra30.c b/arch/arm/mach-tegra/cpuidle-tegra30.c
index c6128526877d..80ae64bcdf50 100644
--- a/arch/arm/mach-tegra/cpuidle-tegra30.c
+++ b/arch/arm/mach-tegra/cpuidle-tegra30.c
@@ -17,12 +17,13 @@
#include <linux/kernel.h>
#include <linux/module.h>
+#include <soc/tegra/pm.h>
+
#include <asm/cpuidle.h>
#include <asm/smp_plat.h>
#include <asm/suspend.h>
#include "cpuidle.h"
-#include "pm.h"
#include "sleep.h"
#ifdef CONFIG_PM_SLEEP
@@ -68,9 +69,7 @@ static bool tegra30_cpu_cluster_power_down(struct cpuidle_device *dev,
return false;
}
- tegra_idle_lp2_last();
-
- return true;
+ return !tegra_pm_enter_lp2();
}
#ifdef CONFIG_SMP
@@ -80,7 +79,7 @@ static bool tegra30_cpu_core_power_down(struct cpuidle_device *dev,
{
smp_wmb();
- cpu_suspend(0, tegra30_sleep_cpu_secondary_finish);
+ cpu_suspend(0, tegra30_pm_secondary_cpu_suspend);
return true;
}
@@ -98,30 +97,22 @@ static int tegra30_idle_lp2(struct cpuidle_device *dev,
int index)
{
bool entered_lp2 = false;
- bool last_cpu;
local_fiq_disable();
- last_cpu = tegra_set_cpu_in_lp2();
+ tegra_pm_set_cpu_in_lp2();
cpu_pm_enter();
- if (dev->cpu == 0) {
- if (last_cpu)
- entered_lp2 = tegra30_cpu_cluster_power_down(dev, drv,
- index);
- else
- cpu_do_idle();
- } else {
+ if (dev->cpu == 0)
+ entered_lp2 = tegra30_cpu_cluster_power_down(dev, drv, index);
+ else
entered_lp2 = tegra30_cpu_core_power_down(dev, drv, index);
- }
cpu_pm_exit();
- tegra_clear_cpu_in_lp2();
+ tegra_pm_clear_cpu_in_lp2();
local_fiq_enable();
- smp_rmb();
-
return (entered_lp2) ? index : 0;
}
#endif