diff options
Diffstat (limited to 'arch/arm/cpu/arm926ejs/at91/reset.c')
| -rw-r--r-- | arch/arm/cpu/arm926ejs/at91/reset.c | 21 | 
1 files changed, 11 insertions, 10 deletions
| diff --git a/arch/arm/cpu/arm926ejs/at91/reset.c b/arch/arm/cpu/arm926ejs/at91/reset.c index 1b67e7788..d2569d8ba 100644 --- a/arch/arm/cpu/arm926ejs/at91/reset.c +++ b/arch/arm/cpu/arm926ejs/at91/reset.c @@ -27,18 +27,19 @@  #include <asm/arch/at91_rstc.h>  #include <asm/arch/io.h> -/* - * Reset the cpu by setting up the watchdog timer and let him time out. - */ +/* Reset the cpu by telling the reset controller to do so */  void reset_cpu(ulong ignored)  {  	at91_rstc_t *rstc = (at91_rstc_t *) AT91_RSTC_BASE; -	/* this is the way Linux does it */ - -	writel(AT91_RSTC_KEY | AT91_RSTC_CR_PROCRST | AT91_RSTC_CR_PERRST, -		&rstc->cr); - -	while (1); -	/* Never reached */ +	writel(AT91_RSTC_KEY +		| AT91_RSTC_CR_PROCRST	/* Processor Reset */ +		| AT91_RSTC_CR_PERRST	/* Peripheral Reset */ +#ifdef CONFIG_AT91RESET_EXTRST +		| AT91_RSTC_CR_EXTRST	/* External Reset (assert nRST pin) */ +#endif +		, &rstc->cr); +	/* never reached */ +	while (1) +		;  } |