Hi,
I am trying to put OMAP3 in suspend state, while audio is playing, by issuing:
echo mem > /sys/power/state
root@omap3evm:~# echo mem > /sys/power/state PM: Syncing filesystems ... done. Freezing user space processes ... (elapsed 0.00 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. Suspending console(s) (use no_console_suspend to debug) Powerdomain (core_pwrdm) didn't enter target state 1 Powerdomain (per_pwrdm) didn't enter target state 1 Could not enter target state in pm_suspend Restarting tasks ... Suspended. Trying resume. done. Done. root@omap3evm:~#
As can be seen from the log, both the CORE and PER power domains are not going to the suspend state.
On further debug, I found that McBSP 2 instance belongs to the PER domain whereas SDMA belongs to CORE domain. And at least McBSP driver (on l-o tip) doesn't allow disabling of the clocks unless McBSP instance itself is freed. Because of this, when McBSP is stopped after receiving the suspend request, the clocks are still ON and the PER domain is not allowed to enter to the desired low-power state.
The McBSP driver needs to be modified so that it can accommodate suspend/resume requests and turns off the clocks when not required. Has anyone modified the driver for this, on some other branch? I tried finding it but could not do so. (Just wanted to make sure before doing the changes)
Regards, Anuj Aggarwal