summaryrefslogtreecommitdiff
path: root/cpu/arm920t/s3c24x0/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpu/arm920t/s3c24x0/interrupts.c')
-rw-r--r--cpu/arm920t/s3c24x0/interrupts.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/cpu/arm920t/s3c24x0/interrupts.c b/cpu/arm920t/s3c24x0/interrupts.c
index 868621f..ba835f3 100644
--- a/cpu/arm920t/s3c24x0/interrupts.c
+++ b/cpu/arm920t/s3c24x0/interrupts.c
@@ -185,4 +185,31 @@ ulong get_tbclk (void)
return tbclk;
}
+/*
+ * reset the cpu by setting up the watchdog timer and let him time out
+ */
+void reset_cpu (ulong ignored)
+{
+ S3C24X0_WATCHDOG * const watchdog;
+
+#ifdef CONFIG_TRAB
+ disable_vfd();
+#endif
+
+ watchdog = S3C24X0_GetBase_WATCHDOG();
+
+ /* Disable watchdog */
+ watchdog->WTCON = 0x0000;
+
+ /* Initialize watchdog timer count register */
+ watchdog->WTCNT = 0x0001;
+
+ /* Enable watchdog timer; assert reset at timer timeout */
+ watchdog->WTCON = 0x0021;
+
+ while(1); /* loop forever and wait for reset to happen */
+
+ /*NOTREACHED*/
+}
+
#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined (CONFIG_TRAB) */