diff options
Diffstat (limited to 'plat/xilinx/zynqmp/plat_psci.c')
-rw-r--r-- | plat/xilinx/zynqmp/plat_psci.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/plat/xilinx/zynqmp/plat_psci.c b/plat/xilinx/zynqmp/plat_psci.c index f0e260de..472adfb7 100644 --- a/plat/xilinx/zynqmp/plat_psci.c +++ b/plat/xilinx/zynqmp/plat_psci.c @@ -147,7 +147,7 @@ static void zynqmp_pwr_domain_off(const psci_power_state_t *target_state) * invoking CPU_on function, during which resume address will * be set. */ - pm_self_suspend(proc->node_id, MAX_LATENCY, 0, 0); + pm_self_suspend(proc->node_id, MAX_LATENCY, PM_STATE_CPU_IDLE, 0); } static void zynqmp_nopmu_pwr_domain_suspend(const psci_power_state_t *target_state) @@ -179,6 +179,7 @@ static void zynqmp_nopmu_pwr_domain_suspend(const psci_power_state_t *target_sta static void zynqmp_pwr_domain_suspend(const psci_power_state_t *target_state) { + unsigned int state; unsigned int cpu_id = plat_my_core_pos(); const struct pm_proc *proc = pm_get_proc(cpu_id); @@ -186,15 +187,14 @@ static void zynqmp_pwr_domain_suspend(const psci_power_state_t *target_state) VERBOSE("%s: target_state->pwr_domain_state[%lu]=%x\n", __func__, i, target_state->pwr_domain_state[i]); + state = target_state->pwr_domain_state[1] > PLAT_MAX_RET_STATE ? + PM_STATE_SUSPEND_TO_RAM : PM_STATE_CPU_IDLE; + /* Send request to PMU to suspend this core */ - pm_self_suspend(proc->node_id, MAX_LATENCY, 0, zynqmp_sec_entry); + pm_self_suspend(proc->node_id, MAX_LATENCY, state, zynqmp_sec_entry); /* APU is to be turned off */ if (target_state->pwr_domain_state[1] > PLAT_MAX_RET_STATE) { - /* Power down L2 cache */ - pm_set_requirement(NODE_L2, 0, 0, REQ_ACK_NO); - /* Send request for OCM retention state */ - set_ocm_retention(); /* disable coherency */ plat_arm_interconnect_exit_coherency(); } |