summaryrefslogtreecommitdiff
path: root/plat/imx/imx8m/imx8m_psci_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'plat/imx/imx8m/imx8m_psci_common.c')
-rw-r--r--plat/imx/imx8m/imx8m_psci_common.c22
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))) {