aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantosh Shilimkar <santosh.shilimkar@ti.com>2013-02-13 03:55:24 -0500
committerKevin Hilman <khilman@linaro.org>2013-04-09 13:53:06 -0400
commit72433ebada5a270899a7b1b1fa5afdc40d24998c (patch)
tree378ff2799598f61ff78db61d909a1d5d19ffca14
parentc309f7f46167e85d1aae2fd31f23e7d2b5cdfbe0 (diff)
ARM: OMAP4: PM: Avoid expensive cpu_suspend() path for all CPU power states except off
Current CPU PM code code make use of common cpu_suspend() path for all the CPU power states which is not optimal. In fact cpu_suspend() path is needed only when we put CPU power domain to off state where the CPU context is lost. Update the code accordingly so that the expensive cpu_suspend() path can be avoided for the shallow CPU power states like CPU PD INA/CSWR. The patch has been tested on OMAP4430 and OMAP5430(with few out of tree patches) devices for suspend and CPUidle. Cc: Kevin Hilman <khilman@deeprootsystems.com> Reported-by: Richard Woodruff <r-woodruff2@ti.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Kevin Hilman <khilman@linaro.org>
-rw-r--r--arch/arm/mach-omap2/omap-mpuss-lowpower.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
index 8bcb64bcdcdb..d650f91f15de 100644
--- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
@@ -246,7 +246,10 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
246 /* 246 /*
247 * Call low level function with targeted low power state. 247 * Call low level function with targeted low power state.
248 */ 248 */
249 cpu_suspend(save_state, omap4_finish_suspend); 249 if (save_state)
250 cpu_suspend(save_state, omap4_finish_suspend);
251 else
252 omap4_finish_suspend(save_state);
250 253
251 /* 254 /*
252 * Restore the CPUx power state to ON otherwise CPUx 255 * Restore the CPUx power state to ON otherwise CPUx