diff options
author | Bai Ping <ping.bai@nxp.com> | 2018-06-05 13:07:38 +0800 |
---|---|---|
committer | Abel Vesa <abel.vesa@nxp.com> | 2018-06-11 10:33:03 +0300 |
commit | 7f83fd077208220c57a389871abb987d371ca50c (patch) | |
tree | f6ca6db625d23aeb8b1621821446752a34e2e07b /plat/imx/imx8mm/imx8mm_psci.c | |
parent | 21fa6238d98517739e9e65cd6431a1e5a0880a52 (diff) |
MLK-18502-02 plat: imx8mm: keep L2 cache memory power in WAIT mode
When system enter deepest cpuilde(WAIT mode), the L2 cache memory
can be on for retention to increase the system performance. So
the WAIT mode with cluster power down should be defined as
rentention power state in PSCI. changing the WAIT_OFF_STATE to
WAIT_RET_STATE to make sure the l2 cache memory is not
clean & invalidate.
Signed-off-by: Bai Ping <ping.bai@nxp.com>
Diffstat (limited to 'plat/imx/imx8mm/imx8mm_psci.c')
-rw-r--r-- | plat/imx/imx8mm/imx8mm_psci.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/plat/imx/imx8mm/imx8mm_psci.c b/plat/imx/imx8mm/imx8mm_psci.c index 6925257a..9c7bec12 100644 --- a/plat/imx/imx8mm/imx8mm_psci.c +++ b/plat/imx/imx8mm/imx8mm_psci.c @@ -87,7 +87,7 @@ int imx_validate_power_state(unsigned int power_state, if (pwr_type == PSTATE_TYPE_POWERDOWN && state_id == 0x33) { CORE_PWR_STATE(req_state) = PLAT_MAX_OFF_STATE; - CLUSTER_PWR_STATE(req_state) = PLAT_WAIT_OFF_STATE; + CLUSTER_PWR_STATE(req_state) = PLAT_WAIT_RET_STATE; } return PSCI_E_SUCCESS; @@ -124,10 +124,8 @@ void imx_domain_suspend(const psci_power_state_t *target_state) isb(); } - if (is_local_state_off(CLUSTER_PWR_STATE(target_state))) { + if (!is_local_state_run(CLUSTER_PWR_STATE(target_state))) imx_set_cluster_powerdown(core_id, CLUSTER_PWR_STATE(target_state)); - } else - imx_set_cluster_standby(true); /* do system level power mode setting */ if (is_local_state_retn(SYSTEM_PWR_STATE(target_state))) { @@ -155,10 +153,8 @@ void imx_domain_suspend_finish(const psci_power_state_t *target_state) } /* check the cluster level power status */ - if (is_local_state_off(CLUSTER_PWR_STATE(target_state))) { + if (!is_local_state_run(CLUSTER_PWR_STATE(target_state))) imx_set_cluster_powerdown(core_id, PSCI_LOCAL_STATE_RUN); - } else - imx_set_cluster_standby(false); /* check the core level power status */ if (is_local_state_off(CORE_PWR_STATE(target_state))) { |