|
@@ -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)
|
|
|
+ ;
|
|
|
}
|