diff options
author | Kevin Hilman <khilman@ti.com> | 2012-05-11 19:00:24 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@ti.com> | 2012-06-25 14:22:48 -0400 |
commit | e055548953355b6e69c56f9e54388845b29b4e97 (patch) | |
tree | d9694b593408193e83574a1e49cb0c4908578182 /arch/arm/mach-omap2/pm34xx.c | |
parent | 9a17d88e0586bb7189655f8f99484a872a474626 (diff) |
ARM: OMAP2+: powerdomain: allow pre/post transtion to be per pwrdm
Iteration over all power domains in the idle path is unnecessary since
only power domains that are transitioning need to be accounted for.
Also PRCM register accesses are known to be expensive, so the
additional latency added to the idle path is signficiant.
In order allow the pre/post transitions to be isolated and called
per-pwrdm, change the API so passing in a specific power domain will
trigger the pre/post transtion accounting for only that specific power
domain. Passing NULL means iterating over all power domains as is
current behavior.
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
Acked-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/pm34xx.c')
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index e67d898433fb..0bbbc8c82fd8 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -273,7 +273,7 @@ void omap_sram_idle(void) | |||
273 | per_next_state = pwrdm_read_next_pwrst(per_pwrdm); | 273 | per_next_state = pwrdm_read_next_pwrst(per_pwrdm); |
274 | core_next_state = pwrdm_read_next_pwrst(core_pwrdm); | 274 | core_next_state = pwrdm_read_next_pwrst(core_pwrdm); |
275 | 275 | ||
276 | pwrdm_pre_transition(); | 276 | pwrdm_pre_transition(NULL); |
277 | 277 | ||
278 | /* PER */ | 278 | /* PER */ |
279 | if (per_next_state < PWRDM_POWER_ON) { | 279 | if (per_next_state < PWRDM_POWER_ON) { |
@@ -338,7 +338,7 @@ void omap_sram_idle(void) | |||
338 | } | 338 | } |
339 | omap3_intc_resume_idle(); | 339 | omap3_intc_resume_idle(); |
340 | 340 | ||
341 | pwrdm_post_transition(); | 341 | pwrdm_post_transition(NULL); |
342 | 342 | ||
343 | /* PER */ | 343 | /* PER */ |
344 | if (per_next_state < PWRDM_POWER_ON) | 344 | if (per_next_state < PWRDM_POWER_ON) |