summaryrefslogtreecommitdiff
path: root/plat/imx/imx8mm/imx8mm_psci.c
diff options
context:
space:
mode:
authorBai Ping <ping.bai@nxp.com>2018-06-05 13:07:38 +0800
committerAbel Vesa <abel.vesa@nxp.com>2018-06-11 10:33:03 +0300
commit7f83fd077208220c57a389871abb987d371ca50c (patch)
treef6ca6db625d23aeb8b1621821446752a34e2e07b /plat/imx/imx8mm/imx8mm_psci.c
parent21fa6238d98517739e9e65cd6431a1e5a0880a52 (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.c10
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))) {