diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/psci/psci_off.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/psci/psci_off.c b/lib/psci/psci_off.c index ee016d5d..b8f901ef 100644 --- a/lib/psci/psci_off.c +++ b/lib/psci/psci_off.c @@ -13,6 +13,7 @@ #include <runtime_instr.h> #include <string.h> #include "psci_private.h" +#include <plat_marvell.h> /****************************************************************************** * Construct the psci_power_state to request power OFF at all power levels. @@ -94,6 +95,19 @@ int psci_do_cpu_off(unsigned int end_pwrlvl) PMF_CACHE_MAINT); #endif +#ifdef SCP_IMAGE + if (is_pm_fw_running()) { + /* + * MSS implementation does not support cluster power down + * in case of Hot plug, therefore we defined MPIDR_AFFLVL1 + * state to PSCI_LOCAL_STATE_RUN. resulting in max off level + * set to CPU level + */ + state_info.pwr_domain_state[MPIDR_AFFLVL1] = + PSCI_LOCAL_STATE_RUN; + } +#endif + /* * Arch. management. Initiate power down sequence. */ @@ -105,16 +119,6 @@ int psci_do_cpu_off(unsigned int end_pwrlvl) PMF_NO_CACHE_MAINT); #endif -#ifdef SCP_IMAGE - /* - * MSS implementation does not support cluster power down - * in case of Hot plug, therefore we defined MPIDR_AFFLVL1 - * state to PSCI_LOCAL_STATE_RUN. resulting in max off level - * set to CPU level - */ - state_info.pwr_domain_state[MPIDR_AFFLVL1] = PSCI_LOCAL_STATE_RUN; -#endif - /* * Plat. management: Perform platform specific actions to turn this * cpu off e.g. exit cpu coherency, program the power controller etc. |