[PATCH 11/14] UBUNTU: SAUCE: ARM: highbank: use writel_relaxed variant for pwr requests

Ike Panhc ike.pan at canonical.com
Fri Aug 3 01:26:14 UTC 2012


From: Rob Herring <rob.herring at calxeda.com>

BugLink: http://launchpad.net/bugs/1008345

At least for reset, the spinlock for l2x0 cache causes reboot to hang.
Convert writel to writel_relaxed for all writes to the PWR_REQ register.

Signed-off-by: Rob Herring <rob.herring at calxeda.com>
Signed-off-by: Ike Panhc <ike.pan at canonical.com>
---
 arch/arm/mach-highbank/sysregs.h |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-highbank/sysregs.h b/arch/arm/mach-highbank/sysregs.h
index 0e91338..6b10548 100644
--- a/arch/arm/mach-highbank/sysregs.h
+++ b/arch/arm/mach-highbank/sysregs.h
@@ -31,22 +31,22 @@ extern void __iomem *sregs_base;
 
 static inline void hignbank_set_pwr_suspend(void)
 {
-	writel(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ);
+	writel_relaxed(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ);
 }
 
 static inline void hignbank_set_pwr_shutdown(void)
 {
-	writel(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ);
+	writel_relaxed(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ);
 }
 
 static inline void hignbank_set_pwr_soft_reset(void)
 {
-	writel(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
+	writel_relaxed(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
 }
 
 static inline void hignbank_set_pwr_hard_reset(void)
 {
-	writel(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
+	writel_relaxed(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
 }
 
 #endif
-- 
1.7.9.5





More information about the kernel-team mailing list