diff options
Diffstat (limited to 'plat/imx/imx8m/imx8m_psci_common.c')
-rw-r--r-- | plat/imx/imx8m/imx8m_psci_common.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/plat/imx/imx8m/imx8m_psci_common.c b/plat/imx/imx8m/imx8m_psci_common.c index fc649d51..f646de62 100644 --- a/plat/imx/imx8m/imx8m_psci_common.c +++ b/plat/imx/imx8m/imx8m_psci_common.c @@ -121,10 +121,13 @@ void imx_domain_suspend(const psci_power_state_t *target_state) imx_set_cluster_powerdown(core_id, CLUSTER_PWR_STATE(target_state)); if (is_local_state_off(SYSTEM_PWR_STATE(target_state))) { - imx_set_sys_lpm(core_id, true); - dram_enter_retention(); - imx_anamix_override(true); - imx_noc_wrapper_pre_suspend(core_id); + if (!imx_m4_lpa_active()) { + imx_set_sys_lpm(core_id, true); + dram_enter_retention(); + imx_anamix_override(true); + imx_noc_wrapper_pre_suspend(core_id); + } + imx_set_sys_wakeup(core_id, true); } } @@ -134,10 +137,13 @@ void imx_domain_suspend_finish(const psci_power_state_t *target_state) unsigned int core_id = MPIDR_AFFLVL0_VAL(mpidr); if (is_local_state_off(SYSTEM_PWR_STATE(target_state))) { - imx_noc_wrapper_post_resume(core_id); - imx_anamix_override(false); - dram_exit_retention(); - imx_set_sys_lpm(core_id, false); + if (!imx_m4_lpa_active()) { + imx_noc_wrapper_post_resume(core_id); + imx_anamix_override(false); + dram_exit_retention(); + imx_set_sys_lpm(core_id, false); + } + imx_set_sys_wakeup(core_id, false); } if (!is_local_state_run(CLUSTER_PWR_STATE(target_state))) { |