From b127cdb879aed2ced388af3cd9481e80c68f3e8c Mon Sep 17 00:00:00 2001 From: Achin Gupta Date: Tue, 12 Nov 2013 16:40:00 +0000 Subject: 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 --- drivers/power/fvp_pwrc.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/power/fvp_pwrc.h') diff --git a/drivers/power/fvp_pwrc.h b/drivers/power/fvp_pwrc.h index 050c33b6..73d36df7 100644 --- a/drivers/power/fvp_pwrc.h +++ b/drivers/power/fvp_pwrc.h @@ -67,7 +67,8 @@ extern int fvp_pwrc_setup(void); extern void fvp_pwrc_write_pcoffr(unsigned long); extern void fvp_pwrc_write_ppoffr(unsigned long); extern void fvp_pwrc_write_pponr(unsigned long); -extern void fvp_pwrc_write_pwkupr(unsigned long); +extern void fvp_pwrc_set_wen(unsigned long); +extern void fvp_pwrc_clr_wen(unsigned long); extern unsigned int fvp_pwrc_read_psysr(unsigned long); extern unsigned int fvp_pwrc_get_cpu_wkr(unsigned long); -- cgit