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 19:09:12 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-11-01 14:19:34 +0000
commit426fcd2a351e4bf662fee9fa2cf2603a48223164 (patch)
tree8abcf507bc2d7d4e285073add55729ceeddb5c44 /arch/arm/mach-realview/include/mach/system.h
parentdf71dfd4ca01130f98d9dbfab76c440d72a177c6 (diff)
downloadkernel_samsung_smdk4412-426fcd2a351e4bf662fee9fa2cf2603a48223164.zip
kernel_samsung_smdk4412-426fcd2a351e4bf662fee9fa2cf2603a48223164.tar.gz
kernel_samsung_smdk4412-426fcd2a351e4bf662fee9fa2cf2603a48223164.tar.bz2
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 1a15a44..a30f2e3 100644
--- a/arch/arm/mach-realview/include/mach/system.h
+++ b/arch/arm/mach-realview/include/mach/system.h
@@ -25,6 +25,8 @@
#include <mach/hardware.h>
#include <mach/platform.h>
+void (*realview_reset)(char mode);
+
static inline void arch_idle(void)
{
/*
@@ -36,16 +38,12 @@ static inline void arch_idle(void)
static inline void arch_reset(char mode, const char *cmd)
{
- void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_RESETCTL_OFFSET;
- unsigned int val;
-
/*
* To reset, we hit the on-board reset register
* in the system FPGA
*/
- val = __raw_readl(hdr_ctrl);
- val |= REALVIEW_SYS_CTRL_RESET_CONFIGCLR;
- __raw_writel(val, hdr_ctrl);
+ if (realview_reset)
+ realview_reset(mode);
}
#endif