zynqmp: pm: Move pm_client_wakeup call from pm_req_wakeup

Call to pm_client_wakeup from pm_req_wakeup prevented the PM API
call to be used to wake up non-APU processor (e.g. from higher ELs),
since it clears power down request for specified APU processor.
Move this function out of pm_client_wakeup to allow passing wake up
requests to the PMU for other processor in the system.

Signed-off-by: Filip Drazic <filip.drazic@aggios.com>
Acked-by: Will Wong <willw@xilinx.com>
This commit is contained in:
Filip Drazic 2017-02-07 12:03:56 +01:00 committed by Siva Durga Prasad Paladugu
parent c496f5af54
commit 9feba2e7dd
2 changed files with 2 additions and 3 deletions

View File

@ -78,6 +78,8 @@ static int zynqmp_pwr_domain_on(u_register_t mpidr)
return PSCI_E_INTERN_FAIL;
proc = pm_get_proc(cpu_id);
/* Clear power down request */
pm_client_wakeup(proc);
/* Send request to PMU to wake up selected APU CPU core */
pm_req_wakeup(proc->node_id, 1, zynqmp_sec_entry, REQ_ACK_BLOCKING);

View File

@ -130,10 +130,7 @@ enum pm_ret_status pm_req_wakeup(enum pm_node_id target,
{
uint32_t payload[PAYLOAD_ARG_CNT];
uint64_t encoded_address;
const struct pm_proc *proc = pm_get_proc_by_node(target);
/* invoke APU-specific code for waking up another APU core */
pm_client_wakeup(proc);
/* encode set Address into 1st bit of address */
encoded_address = address;