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
diff --git a/services/std_svc/psci1.0/psci_entry.S b/services/std_svc/psci1.0/psci_entry.S
index 050f6c6..13a0b86 100644
--- a/services/std_svc/psci1.0/psci_entry.S
+++ b/services/std_svc/psci1.0/psci_entry.S
@@ -46,11 +46,11 @@
 	 * -----------------------------------------------------
 	 */
 func psci_aff_on_finish_entry
-	adr	x23, psci_afflvl_on_finishers
+	adr	x23, psci_afflvl_on_finisher
 	b	psci_aff_common_finish_entry
 
 psci_aff_suspend_finish_entry:
-	adr	x23, psci_afflvl_suspend_finishers
+	adr	x23, psci_afflvl_suspend_finisher
 
 psci_aff_common_finish_entry:
 	/*
@@ -98,15 +98,8 @@
 	mov	x0, #DISABLE_DCACHE
 	bl	bl31_plat_enable_mmu
 
-	/* ---------------------------------------------
-	 * Call the finishers starting from affinity
-	 * level 0.
-	 * ---------------------------------------------
-	 */
 	bl	get_power_on_target_afflvl
-	mov	x2, x23
-	mov	x1, x0
-	mov	x0, #MPIDR_AFFLVL0
+	mov	x1, x23
 	bl	psci_afflvl_power_on_finish
 
 	b	el3_exit