mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-08 18:41:22 +00:00
PSCI: Add support for PSCI NODE_HW_STATE API
This patch adds support for NODE_HW_STATE PSCI API by introducing a new PSCI platform hook (get_node_hw_state). The implementation validates supplied arguments, and then invokes this platform-defined hook and returns its result to the caller. PSCI capabilities are updated accordingly. Also updates porting and firmware design guides. Change-Id: I808e55bdf0c157002a7c104b875779fe50a68a30
This commit is contained in:
parent
77b0532392
commit
28d3d614b5
6 changed files with 65 additions and 1 deletions
|
@ -295,6 +295,31 @@ long psci_migrate_info_up_cpu(void)
|
|||
return resident_cpu_mpidr;
|
||||
}
|
||||
|
||||
int psci_node_hw_state(u_register_t target_cpu,
|
||||
unsigned int power_level)
|
||||
{
|
||||
int rc;
|
||||
|
||||
/* Validate target_cpu */
|
||||
rc = psci_validate_mpidr(target_cpu);
|
||||
if (rc != PSCI_E_SUCCESS)
|
||||
return PSCI_E_INVALID_PARAMS;
|
||||
|
||||
/* Validate power_level against PLAT_MAX_PWR_LVL */
|
||||
if (power_level > PLAT_MAX_PWR_LVL)
|
||||
return PSCI_E_INVALID_PARAMS;
|
||||
|
||||
/*
|
||||
* Dispatch this call to platform to query power controller, and pass on
|
||||
* to the caller what it returns
|
||||
*/
|
||||
assert(psci_plat_pm_ops->get_node_hw_state);
|
||||
rc = psci_plat_pm_ops->get_node_hw_state(target_cpu, power_level);
|
||||
assert((rc >= HW_ON && rc <= HW_STANDBY) || rc == PSCI_E_NOT_SUPPORTED
|
||||
|| rc == PSCI_E_INVALID_PARAMS);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int psci_features(unsigned int psci_fid)
|
||||
{
|
||||
unsigned int local_caps = psci_caps;
|
||||
|
@ -378,6 +403,9 @@ u_register_t psci_smc_handler(uint32_t smc_fid,
|
|||
case PSCI_MIG_INFO_UP_CPU_AARCH32:
|
||||
return psci_migrate_info_up_cpu();
|
||||
|
||||
case PSCI_NODE_HW_STATE_AARCH32:
|
||||
return psci_node_hw_state(x1, x2);
|
||||
|
||||
case PSCI_SYSTEM_SUSPEND_AARCH32:
|
||||
return psci_system_suspend(x1, x2);
|
||||
|
||||
|
@ -422,6 +450,9 @@ u_register_t psci_smc_handler(uint32_t smc_fid,
|
|||
case PSCI_MIG_INFO_UP_CPU_AARCH64:
|
||||
return psci_migrate_info_up_cpu();
|
||||
|
||||
case PSCI_NODE_HW_STATE_AARCH64:
|
||||
return psci_node_hw_state(x1, x2);
|
||||
|
||||
case PSCI_SYSTEM_SUSPEND_AARCH64:
|
||||
return psci_system_suspend(x1, x2);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue