# HG changeset patch # User nickg # Date 1053105109 0 # Node ID 8a8d24f4000aa5f56b3dd9d87aa4ec462d3e387e # Parent f0473e6bec8f0c676af45aeffc7ea337d609f569 * include/hal_diag.h: * src/at91_misc.c: Added function to generate a hardware reset using the watchdog. diff --git a/packages/hal/arm/at91/var/current/ChangeLog b/packages/hal/arm/at91/var/current/ChangeLog --- 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 + + * include/hal_diag.h: + * src/at91_misc.c: Added function to generate a hardware reset + using the watchdog. + 2003-05-15 Nick Garnett * src/at91_misc.c (hal_delay_us): Added calculation to better diff --git a/packages/hal/arm/at91/var/current/include/hal_diag.h b/packages/hal/arm/at91/var/current/include/hal_diag.h --- 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 diff --git a/packages/hal/arm/at91/var/current/src/at91_misc.c b/packages/hal/arm/at91/var/current/src/at91_misc.c --- 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