soc: ti: pm33xx: Add base cpuidle support
authorDave Gerlach <d-gerlach@ti.com>
Fri, 13 Dec 2019 03:07:54 +0000 (21:07 -0600)
committerTony Lindgren <tony@atomide.com>
Thu, 27 Feb 2020 17:27:28 +0000 (09:27 -0800)
commit6afaff1c6624f8901940db13709d0dac2b39e6da
treede96151745deca6105692294ec5d810b7f6e8adb
parent65880ab160838e0764138894ef4450abdbed4af5
soc: ti: pm33xx: Add base cpuidle support

Some cpuidle C-states supported on am335x and am437x, like C1 on am335x,
require the use of the wkup_m3_ipc driver, and all C-states beyond C0 on
both platforms require the use of the SRAM sleep code.

Pass am33xx_do_sram_idle as the idle function to the platform pm core to
be used by the cpuidle-arm driver when entering cpuidle states.
am33xx_do_sram_idle will detect when the wkup_m3 is needed and ping it
if necessary before calling the final cpu_suspend op which will execute
the SRAM code to put the cpu into idle.

Finally, use the begin_suspend and finish_suspend platform ops to be
called at the beginning and end of suspend path to allow use of
cpu_idle_poll_ctrl.

This prevents races between cpuidle and suspend paths trying to
communicate with the wkup_m3, as during suspend we only want it
configured for entry to suspend.

Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/soc/ti/pm33xx.c