clear wakeup enable bit upon resuming from suspend

The FVP specific code that gets called after a cpu has been physically
powered on after having been turned off or suspended earlier does not
clear the PWRC.PWKUPR.WEN bit. Not doing so causes problems if: a cpu
is suspended, woken from suspend, powered down through a cpu_off call
& receives a spurious interrupt. Since the WEN bit is not cleared
after the cpu woke up from suspend, the spurious wakeup will power the
cpu on. Since the cpu_off call clears the jump address in the mailbox
this spurious wakeup will cause the cpu to crash.

This patch fixes this issue by clearing the WEN bit whenever a cpu is
powered up.

Change-Id: Ic91f5dffe1ed01d76bc7fc807acf0ecd3e38ce5b
diff --git a/drivers/power/fvp_pwrc.c b/drivers/power/fvp_pwrc.c
index 2b98b05..cbaaa3d 100644
--- a/drivers/power/fvp_pwrc.c
+++ b/drivers/power/fvp_pwrc.c
@@ -77,7 +77,7 @@
 	bakery_lock_release(mpidr, &pwrc_lock);
 }
 
-void fvp_pwrc_write_pwkupr(unsigned long mpidr)
+void fvp_pwrc_set_wen(unsigned long mpidr)
 {
 	bakery_lock_get(mpidr, &pwrc_lock);
 	mmio_write_32(PWRC_BASE + PWKUPR_OFF,
@@ -85,6 +85,14 @@
 	bakery_lock_release(mpidr, &pwrc_lock);
 }
 
+void fvp_pwrc_clr_wen(unsigned long mpidr)
+{
+	bakery_lock_get(mpidr, &pwrc_lock);
+	mmio_write_32(PWRC_BASE + PWKUPR_OFF,
+		      (unsigned int) mpidr);
+	bakery_lock_release(mpidr, &pwrc_lock);
+}
+
 void fvp_pwrc_write_pcoffr(unsigned long mpidr)
 {
 	bakery_lock_get(mpidr, &pwrc_lock);