changeset 1028:8a8d24f4000a

* include/hal_diag.h: * src/at91_misc.c: Added function to generate a hardware reset using the watchdog.
author nickg
date Fri, 16 May 2003 17:11:49 +0000
parents f0473e6bec8f
children c4851c42c5d7
files packages/hal/arm/at91/var/current/ChangeLog packages/hal/arm/at91/var/current/include/hal_diag.h packages/hal/arm/at91/var/current/src/at91_misc.c
diffstat 3 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/at91/var/current/ChangeLog
+++ b/packages/hal/arm/at91/var/current/ChangeLog
@@ -1,3 +1,9 @@
+2003-05-15  Thomas Koeller  <thomas.koeller@baslerweb.com>
+
+	* include/hal_diag.h:
+	* src/at91_misc.c: Added function to generate a hardware reset
+	using the watchdog.
+	
 2003-05-15  Nick Garnett  <nickg@balti.calivar.com>
 
 	* src/at91_misc.c (hal_delay_us): Added calculation to better
--- a/packages/hal/arm/at91/var/current/include/hal_diag.h
+++ b/packages/hal/arm/at91/var/current/include/hal_diag.h
@@ -44,7 +44,7 @@
 //#####DESCRIPTIONBEGIN####
 //
 // Author(s):   jskov
-// Contributors:jskov, gthomas
+// Contributors:jskov, gthomas, tkoeller
 // Date:        2001-07-12
 // Purpose:     HAL Support for Kernel Diagnostic Routines
 // Description: Diagnostic routines for use during kernel development.
@@ -75,5 +75,10 @@ extern void hal_delay_us(cyg_int32 usecs
 #define HAL_DELAY_US(n) hal_delay_us(n);
 
 //-----------------------------------------------------------------------------
+// reset
+
+extern void hal_at91_reset_cpu(void);
+
+//-----------------------------------------------------------------------------
 // end of hal_diag.h
 #endif // CYGONCE_HAL_DIAG_H
--- a/packages/hal/arm/at91/var/current/src/at91_misc.c
+++ b/packages/hal/arm/at91/var/current/src/at91_misc.c
@@ -42,7 +42,7 @@
 //#####DESCRIPTIONBEGIN####
 //
 // Author(s):    gthomas
-// Contributors: gthomas, jskov, nickg
+// Contributors: gthomas, jskov, nickg, tkoeller
 // Date:         2001-07-12
 // Purpose:      HAL board support
 // Description:  Implementations of HAL board interfaces
@@ -264,5 +264,15 @@ void hal_show_IRQ(int vector, int data, 
 }
 
 
+/* Use the watchdog to generate a reset */
+void hal_at91_reset_cpu(void)
+{
+    HAL_WRITE_UINT32(AT91_WD + AT91_WD_OMR, AT91_WD_OMR_OKEY);
+    HAL_WRITE_UINT32(AT91_WD + AT91_WD_CMR, AT91_WD_CMR_CKEY);
+    HAL_WRITE_UINT32(AT91_WD + AT91_WD_CR, AT91_WD_CR_RSTKEY);
+    HAL_WRITE_UINT32(AT91_WD + AT91_WD_OMR, AT91_WD_OMR_OKEY | AT91_WD_OMR_RSTEN | AT91_WD_OMR_WDEN);
+    while(1) CYG_EMPTY_STATEMENT;
+}
+
 //--------------------------------------------------------------------------
 // EOF at91_misc.c