diff options
author | Soby Mathew <soby.mathew@arm.com> | 2015-06-30 11:00:24 +0100 |
---|---|---|
committer | Soby Mathew <soby.mathew@arm.com> | 2015-08-05 14:14:24 +0100 |
commit | 6590ce22955357d5d6f2bce13f84a1189e3b8d0f (patch) | |
tree | 321486d0e6c5978d7fd80e7da50e825396d00aa8 /include/bl31 | |
parent | b48349eb07103e23cea3d890dd01d52c74667514 (diff) |
PSCI: Invoke PM hooks only for the highest level
This patch optimizes the invocation of the platform power management hooks for
ON, OFF and SUSPEND such that they are called only for the highest affinity
level which will be powered off/on. Earlier, the hooks were being invoked for
all the intermediate levels as well.
This patch requires that the platforms migrate to the new semantics of the PM
hooks. It also removes the `state` parameter from the pm hooks as the `afflvl`
parameter now indicates the highest affinity level for which power management
operations are required.
Change-Id: I57c87931d8a2723aeade14acc710e5b78ac41732
Diffstat (limited to 'include/bl31')
-rw-r--r-- | include/bl31/services/psci1.0/psci.h | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/include/bl31/services/psci1.0/psci.h b/include/bl31/services/psci1.0/psci.h index dd1891c6..905fc8ab 100644 --- a/include/bl31/services/psci1.0/psci.h +++ b/include/bl31/services/psci1.0/psci.h @@ -171,8 +171,6 @@ ******************************************************************************/ typedef struct psci_cpu_data { uint32_t power_state; - uint32_t max_phys_off_afflvl; /* Highest affinity level in physically - powered off state */ #if !USE_COHERENT_MEM bakery_info_t pcpu_bakery_info[PSCI_NUM_AFFS]; #endif @@ -186,15 +184,12 @@ typedef struct plat_pm_ops { void (*affinst_standby)(unsigned int power_state); int (*affinst_on)(unsigned long mpidr, unsigned long sec_entrypoint, - unsigned int afflvl, - unsigned int state); - void (*affinst_off)(unsigned int afflvl, unsigned int state); + unsigned int afflvl); + void (*affinst_off)(unsigned int afflvl); void (*affinst_suspend)(unsigned long sec_entrypoint, - unsigned int afflvl, - unsigned int state); - void (*affinst_on_finish)(unsigned int afflvl, unsigned int state); - void (*affinst_suspend_finish)(unsigned int afflvl, - unsigned int state); + unsigned int afflvl); + void (*affinst_on_finish)(unsigned int afflvl); + void (*affinst_suspend_finish)(unsigned int afflvl); void (*system_off)(void) __dead2; void (*system_reset)(void) __dead2; int (*validate_power_state)(unsigned int power_state); @@ -238,7 +233,6 @@ void psci_register_spd_pm_hook(const spd_pm_ops_t *); int psci_get_suspend_stateid_by_mpidr(unsigned long); int psci_get_suspend_stateid(void); int psci_get_suspend_afflvl(void); -uint32_t psci_get_max_phys_off_afflvl(void); uint64_t psci_smc_handler(uint32_t smc_fid, uint64_t x1, |