• Dave Gerlach's avatar
    soc: ti: pm33xx: Add base cpuidle support · 6afaff1c
    Dave Gerlach authored
    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: default avatarSantosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: default avatarDave Gerlach <d-gerlach@ti.com>
    Acked-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    6afaff1c
pm33xx.c 12.8 KB