aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview/include/mach/system.h
diff options
context:
space:
mode:
authorPhilby John <pjohn@in.mvista.com>2009-10-28 14:09:12 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-11-01 09:19:34 -0500
commit426fcd2a351e4bf662fee9fa2cf2603a48223164 (patch)
tree8abcf507bc2d7d4e285073add55729ceeddb5c44 /arch/arm/mach-realview/include/mach/system.h
parentdf71dfd4ca01130f98d9dbfab76c440d72a177c6 (diff)
ARM: 5774/1: Fix Realview ARM1176PB board reboot
This is the fix for proper reboot of Realview ARM1176PB board when issuing the reboot command. Setting the eighth bit of control register SYS_RESETCTL to 1 to force a soft reset. arch_reset() is modified for realview machines to call machine specific reset function pointers. Signed-off-by: Philby John <pjohn@in.mvista.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview/include/mach/system.h')
-rw-r--r--arch/arm/mach-realview/include/mach/system.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/arm/mach-realview/include/mach/system.h b/arch/arm/mach-realview/include/mach/system.h
index 1a15a441e027..a30f2e3ec178 100644
--- a/arch/arm/mach-realview/include/mach/system.h
+++ b/arch/arm/mach-realview/include/mach/system.h
@@ -25,6 +25,8 @@
25#include <mach/hardware.h> 25#include <mach/hardware.h>
26#include <mach/platform.h> 26#include <mach/platform.h>
27 27
28void (*realview_reset)(char mode);
29
28static inline void arch_idle(void) 30static inline void arch_idle(void)
29{ 31{
30 /* 32 /*
@@ -36,16 +38,12 @@ static inline void arch_idle(void)
36 38
37static inline void arch_reset(char mode, const char *cmd) 39static inline void arch_reset(char mode, const char *cmd)
38{ 40{
39 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_RESETCTL_OFFSET;
40 unsigned int val;
41
42 /* 41 /*
43 * To reset, we hit the on-board reset register 42 * To reset, we hit the on-board reset register
44 * in the system FPGA 43 * in the system FPGA
45 */ 44 */
46 val = __raw_readl(hdr_ctrl); 45 if (realview_reset)
47 val |= REALVIEW_SYS_CTRL_RESET_CONFIGCLR; 46 realview_reset(mode);
48 __raw_writel(val, hdr_ctrl);
49} 47}
50 48
51#endif 49#endif