[PATCH 00/19] ARM: OMAP4 device off support

Tero Kristo t-kristo at ti.com
Fri Apr 20 05:33:33 EDT 2012


Hi,

First version for this work. Applies on top of mainline + iochain set +
OMAP4 core retention set. Working tree available here:
tree: git://gitorious.org/~kristo/omap-pm/omap-pm-work.git
branch: mainline-3.4-omap4-dev-off

Tested on omap4430 EMU blaze + omap4460 GP panda boards.

Some drivers have issues with device off, most notably MMC, as it breaks
device off on blaze device after 1 entry to device off mode:

[  208.906921] omap_i2c omap_i2c.1: XRDY IRQ while no data to send
[  209.905639] omap_i2c omap_i2c.1: controller timed out
[  209.905792] twl: i2c_read failed to transfer all messages
[  209.905792] omap_hsmmc omap_hsmmc.1: could not set regulator OCR (-110)
[  212.296203] mmc0: error -110 during resume (card was removed?)
[  212.562164] PM: resume of devices complete after 3656.007 msecs
[  212.660125] Restarting tasks ... done.
# 
# echo mem > /sys/power/state 
[  220.376892] PM: Syncing filesystems ... done.
[  220.382476] Freezing user space processes ... (elapsed 0.01 seconds) done.
[  220.408386] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) don
e.
[  220.439605] Suspending console(s) (use no_console_suspend to debug)
[  220.454650] dpm_run_callback(): platform_pm_suspend+0x0/0x54 returns -110
[  220.454711] PM: Device omap_hsmmc.1 failed to suspend: error -110
[  220.454711] PM: Some devices failed to suspend
[  220.718261] PM: resume of devices complete after 263.539 msecs
[  220.743988] Restarting tasks ... done.

Attempting to disable MMC from config prevented boot completely for me,
so this issue is likely to stay until someone fixes the MMC driver.
Panda device works fine though, although the wakeup from device off is
slow due to problems with some other drivers (most likely I2C.)

Off mode is disabled by default, it can be enabled by either calling
omap4_pm_enable_off_mode(1) from board files or alternatively writing
to a debugfs node from userspace:

echo 1 > /debug/pm_debug/enable_off_mode

Device off entry can be tracked through the debugfs also, it increases
the core_pwrdm OFF state counter / timer, as this is an invalid state
for the chip normally (core enters OSWR in device off.) Not sure if this
a good way to do this but comments are welcome.

-Tero




More information about the linux-arm-kernel mailing list