Module Name:    src
Committed By:   nonaka
Date:           Sun Aug 12 17:25:32 UTC 2012

Modified Files:
        src/sys/arch/zaurus/zaurus: machdep.c zaurus_reg.h

Log Message:
To reset the watchdog timer in SL-C7x0/SL-C860.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/zaurus/zaurus/machdep.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/zaurus/zaurus/zaurus_reg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/zaurus/zaurus/machdep.c
diff -u src/sys/arch/zaurus/zaurus/machdep.c:1.31 src/sys/arch/zaurus/zaurus/machdep.c:1.32
--- src/sys/arch/zaurus/zaurus/machdep.c:1.31	Sun Jul 29 00:07:06 2012
+++ src/sys/arch/zaurus/zaurus/machdep.c	Sun Aug 12 17:25:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.31 2012/07/29 00:07:06 matt Exp $	*/
+/*	$NetBSD: machdep.c,v 1.32 2012/08/12 17:25:32 nonaka Exp $	*/
 /*	$OpenBSD: zaurus_machdep.c,v 1.25 2006/06/20 18:24:04 todd Exp $	*/
 
 /*
@@ -107,7 +107,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.31 2012/07/29 00:07:06 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.32 2012/08/12 17:25:32 nonaka Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -163,6 +163,8 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 
 #include <arm/xscale/pxa2x0var.h>
 #include <arm/xscale/pxa2x0_gpio.h>
 
+#include <arm/sa11x0/sa11x0_ostvar.h>
+
 #include <arch/zaurus/zaurus/zaurus_reg.h>
 #include <arch/zaurus/zaurus/zaurus_var.h>
 
@@ -457,11 +459,16 @@ zaurus_restart(void)
 
 		/* External reset circuit presumably asserts nRESET_GPIO. */
 		pxa2x0_gpio_set_function(89, GPIO_OUT | GPIO_SET);
-	} else if (ZAURUS_ISC860) {
-		/* XXX not yet */
-		printf("zaurus_restart() for C7x0 is not implemented yet.\n");
+	} else {
+		/* SL-C7x0/SL-C860 */
+		/* Clear all reset status */
+		ioreg_write(ZAURUS_POWMAN_VBASE + POWMAN_RCSR,
+		    POWMAN_HWR|POWMAN_WDR|POWMAN_SMR|POWMAN_GPR);
+
+		/* watchdog reset */
+		saost_reset();
 	}
-	delay(1 * 1000* 1000);	/* wait 1s */
+	delay(1 * 1000 * 1000);	/* wait 1s */
 }
 
 static inline pd_entry_t *
@@ -546,6 +553,12 @@ static const struct pmap_devmap zaurus_d
 	    _S(4 * COM_NPORTS),
 	    VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
     },
+    {
+	    ZAURUS_POWMAN_VBASE,
+	    _A(PXA2X0_POWMAN_BASE),
+	    _S(PXA2X0_POWMAN_SIZE),
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+    },
 
     {0, 0, 0, 0, 0,}
 };

Index: src/sys/arch/zaurus/zaurus/zaurus_reg.h
diff -u src/sys/arch/zaurus/zaurus/zaurus_reg.h:1.4 src/sys/arch/zaurus/zaurus/zaurus_reg.h:1.5
--- src/sys/arch/zaurus/zaurus/zaurus_reg.h:1.4	Sun Jan 29 10:12:42 2012
+++ src/sys/arch/zaurus/zaurus/zaurus_reg.h	Sun Aug 12 17:25:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: zaurus_reg.h,v 1.4 2012/01/29 10:12:42 tsutsui Exp $	*/
+/*	$NetBSD: zaurus_reg.h,v 1.5 2012/08/12 17:25:32 nonaka Exp $	*/
 /*	$OpenBSD: zaurus_reg.h,v 1.7 2005/12/14 14:39:38 uwe Exp $	*/
 /*	NetBSD: lubbock_reg.h,v 1.1 2003/06/18 10:51:15 bsh Exp */
 
@@ -49,7 +49,8 @@
 #define ZAURUS_FFUART_VBASE	0xfd600000
 #define ZAURUS_BTUART_VBASE	0xfd700000
 #define ZAURUS_STUART_VBASE	0xfd800000
-#define ZAURUS_VBASE_FREE	0xfd900000
+#define ZAURUS_POWMAN_VBASE	0xfd900000
+#define ZAURUS_VBASE_FREE	0xfda00000
 
 #define ioreg_read(a)		(*(volatile uint32_t *)(a))
 #define ioreg_write(a,v)	(*(volatile uint32_t *)(a)=(v))

Reply via email to