summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/psci/psci_off.c24
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.