ARM: OMAP3xxx: CPUIdle: optimize __omap3_enter_idle()
authorPaul Walmsley <paul@pwsan.com>
Sat, 26 Jan 2013 07:58:13 +0000 (00:58 -0700)
committerPaul Walmsley <paul@pwsan.com>
Tue, 29 Jan 2013 21:59:56 +0000 (14:59 -0700)
commit1cd96478cf1505a32861ffed8d8f1189d1b1b8ab
treed65ebdd4a5be3d688147b6acf3a2777fc31c9f13
parentfd6b42a5614077b04ce8f34fbbcf16864723f5df
ARM: OMAP3xxx: CPUIdle: optimize __omap3_enter_idle()

Avoid programming the MPU and CORE powerdomain next-power-state
registers if those powerdomains will never enter low-power states
(e.g., the state that people refer to as "C1").

To avoid making assumptions about CPUIdle states based on their order
in the list, use a flag to mark CPUIdle states that don't enter
powerdomain low-power states.

Avoid a previous-power-state register read on the MPU powerdomain
unless we know that the MPU was supposed to go OFF during the last
state transition.  Previous-power-state register reads can be very
expensive, so it's worth avoiding these when possible.

Since the CORE_L3 clockdomain can't go inactive unless the MPU is active,
there's little point blocking autoidle on the CORE_L3 clockdomain in "C1"
state, since we've programmed the MPU clockdomain to stay active.
Remove the unnecessary code.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
arch/arm/mach-omap2/cpuidle34xx.c