summary refs log tree commit diff
path: root/arch/arm/mach-w90x900
diff options
context:
space:
mode:
authorLi Jie <eltshanli@gmail.com>2009-12-31 15:50:02 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-01-05 20:52:45 +0000
commit58b2e0a2dd8e460d3b7d7f8ec5d3042253b9e08a (patch)
treeee452af3cc8bf27c129bf0bd605ddd85dccf5b38 /arch/arm/mach-w90x900
parent1368c51c501978e5c4148322b7c77d4f49549557 (diff)
downloadlinux-58b2e0a2dd8e460d3b7d7f8ec5d3042253b9e08a.tar.gz
ARM: 5864/1: Implement arch_reset() in NUC900
Implement arch_reset(), reboot from shell become possible.

Signed-off-by: lijie <eltshanli@gmail.com>
Acked-by: Wan ZongShun <mcuos.com@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-w90x900')
-rw-r--r--arch/arm/mach-w90x900/include/mach/system.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-w90x900/include/mach/system.h b/arch/arm/mach-w90x900/include/mach/system.h
index 940640066857..ce228bdc66dd 100644
--- a/arch/arm/mach-w90x900/include/mach/system.h
+++ b/arch/arm/mach-w90x900/include/mach/system.h
@@ -15,7 +15,15 @@
  *
  */
 
+#include <linux/io.h>
 #include <asm/proc-fns.h>
+#include <mach/map.h>
+#include <mach/regs-timer.h>
+
+#define	WTCR	(TMR_BA + 0x1C)
+#define	WTCLK	(1 << 10)
+#define	WTE	(1 << 7)
+#define	WTRE	(1 << 1)
 
 static void arch_idle(void)
 {
@@ -23,6 +31,11 @@ static void arch_idle(void)
 
 static void arch_reset(char mode, const char *cmd)
 {
-	cpu_reset(0);
+	if (mode == 's') {
+		/* Jump into ROM at address 0 */
+		cpu_reset(0);
+	} else {
+		__raw_writel(WTE | WTRE | WTCLK, WTCR);
+	}
 }