This document describes i.MX Android power issues debug and power consumption optimization.
What Power Manager introduced by Android
• Early Suspend
It is allow drivers like LCD, keypad backlight, touch-screen, gsensor, to be notified when user-space writes to /sys/power/request_state to indicate that the user visible sleep state should change. These drivers will act as like Linux stand suspend() to let these devices entry in suspend for better battery life.
Late resume is matching with early suspend. It will resume the devices suspended during early suspend after the Stand Linux resume finished
Wake locks are used by applications, services, kernel drivers to request CPU resources. A locked wakelock, depending on its type, prevents the system from entering suspend or other low-power states. It as a core member in android power management architecture from framework to kernel
What introduced by i.MX to enhance the power framework
Support High bus, Low power audio bus and Low bus totally 3 system bus working points.
Switching between these 3 bus mode according clock flags automatically.
DDR running frequency will change according bus mode changing (highest 528/400MHz and lowest at 24MHz for MX6DQ/DL).
The CPU frequency scaling device driver allows the clock speed of the CPUs to be changed on the fly. Once the CPU frequency is changed, the GP voltage will be changed to the voltage value.
Enhance the default interactive governor for better performance on SDHC/GPU etc.
System Power Profile Service and App (just for MX6DQ/DL)
Support 3 profiles currently: Normal mode, Power Saving Mode and Performance Mode to get much better balance between performance and power consumption.
Profiles can be customized according customers’ HW /MD design, including: CPU running max freq, trigger temperature, CPU running minimal freq, running cpu
LDO bypass mode
i.MX6X has built-in LDO module, but also allows you to use external LDO suppliers. SW will provide the configuration using external LDO or internal LDO.
User Idle Mode
Audio/Video Playback Mode
Idle Audio/Video Playback high power consumption
powerdebug –d -c
SUSPEND MODE high power consumption
Some tips help to locate the problems
System could not entry in suspend mode
echo 15 > /sys/module/wakelock/parameters/debug_mask
echo 15 > /sys/module/userwakelock/parameters/debug_mask
System hang when resume or suspend
make menuconfig enable the PM debug sys
[*] Power Management support
[*] Power Management Debug Support
[*] Verbose Power Management debugging
This makes the system print more useful info before entry in suspend
Kernel resume back from suspend but Android not
This is usually because of the wrong key layout file