aboutsummaryrefslogtreecommitdiff
path: root/plat/imx
diff options
context:
space:
mode:
authorJacky Bai <ping.bai@nxp.com>2019-12-09 09:53:28 +0800
committerManish Pandey <manish.pandey2@arm.com>2020-08-19 09:46:05 +0000
commit9eb1bb63e1d51dd85402227f7d904ae004ef49d9 (patch)
tree568bd0f7e97f5311bb65d09258cf5aa9d344b794 /plat/imx
parent9ce37110f5e78fff40a62ba32fab9282af311102 (diff)
downloadarm-trusted-firmware-9eb1bb63e1d51dd85402227f7d904ae004ef49d9.tar.gz
plat: imx8m: Keep A53 PLAT on in wait mode(ret)
Keep A53 PLAT(SCU) power domain on in wait mode(ret). RBC count only need to be set in PLAT OFF mode, so change it accordingly. Signed-off-by: Jacky Bai <ping.bai@nxp.com> Change-Id: Ie55e25c8210d298506fc4dca7a9653583db45e0c
Diffstat (limited to 'plat/imx')
-rw-r--r--plat/imx/imx8m/gpc_common.c8
-rw-r--r--plat/imx/imx8m/imx8m_psci_common.c2
2 files changed, 4 insertions, 6 deletions
diff --git a/plat/imx/imx8m/gpc_common.c b/plat/imx/imx8m/gpc_common.c
index eb2801cea..8aae1a62b 100644
--- a/plat/imx/imx8m/gpc_common.c
+++ b/plat/imx/imx8m/gpc_common.c
@@ -133,14 +133,12 @@ void imx_set_cluster_powerdown(unsigned int last_core, uint8_t power_state)
val = mmio_read_32(IMX_GPC_BASE + LPCR_A53_AD);
val &= ~EN_L2_WFI_PDN;
/* L2 cache memory is on in WAIT mode */
- if (is_local_state_off(power_state))
+ if (is_local_state_off(power_state)) {
val |= (L2PGE | EN_PLAT_PDN);
- else
- val |= EN_PLAT_PDN;
+ imx_a53_plat_slot_config(true);
+ }
mmio_write_32(IMX_GPC_BASE + LPCR_A53_AD, val);
-
- imx_a53_plat_slot_config(true);
} else {
/* clear the slot and ack for cluster power down */
imx_a53_plat_slot_config(false);
diff --git a/plat/imx/imx8m/imx8m_psci_common.c b/plat/imx/imx8m/imx8m_psci_common.c
index d6416288e..dbb772dc1 100644
--- a/plat/imx/imx8m/imx8m_psci_common.c
+++ b/plat/imx/imx8m/imx8m_psci_common.c
@@ -192,7 +192,7 @@ void __dead2 imx_pwr_domain_pwr_down_wfi(const psci_power_state_t *target_state)
* drived by the 32K OSC, so delay 30us to make sure the counter
* is really running.
*/
- if (!is_local_state_run(CLUSTER_PWR_STATE(target_state))) {
+ if (is_local_state_off(CLUSTER_PWR_STATE(target_state))) {
imx_set_rbc_count();
udelay(30);
}