aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/arch-s3c2410
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2007-12-22 21:09:32 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-01-28 08:20:49 -0500
commitff44b49b55edee33b7ecea987be1a6413162581b (patch)
treef5ac4c47ad7ff7f997f97cb327266ce660437d22 /include/asm-arm/arch-s3c2410
parentd652074ebcedd13c7ce760c7f3327f30862852fb (diff)
[ARM] 4722/1: S3C24XX: Improve output if watchdog reset fails
If the watchdog reset fails and we decided to take the jump to zero approach, allow 50ms for the UARTS to drain the FIFOs before calling into a bootloader that may flush the output. Also reduece the waits and the timeout values as 5 seconds is rather long. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-s3c2410')
-rw-r--r--include/asm-arm/arch-s3c2410/system.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/asm-arm/arch-s3c2410/system.h b/include/asm-arm/arch-s3c2410/system.h
index cb9cd9fb861..14de4e596f8 100644
--- a/include/asm-arm/arch-s3c2410/system.h
+++ b/include/asm-arm/arch-s3c2410/system.h
@@ -82,18 +82,21 @@ arch_reset(char mode)
82 printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__); 82 printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__);
83 83
84 /* put initial values into count and data */ 84 /* put initial values into count and data */
85 __raw_writel(0x100, S3C2410_WTCNT); 85 __raw_writel(0x80, S3C2410_WTCNT);
86 __raw_writel(0x100, S3C2410_WTDAT); 86 __raw_writel(0x80, S3C2410_WTDAT);
87 87
88 /* set the watchdog to go and reset... */ 88 /* set the watchdog to go and reset... */
89 __raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN | 89 __raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN |
90 S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON); 90 S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON);
91 91
92 /* wait for reset to assert... */ 92 /* wait for reset to assert... */
93 mdelay(5000); 93 mdelay(500);
94 94
95 printk(KERN_ERR "Watchdog reset failed to assert reset\n"); 95 printk(KERN_ERR "Watchdog reset failed to assert reset\n");
96 96
97 /* delay to allow the serial port to show the message */
98 mdelay(50);
99
97 /* we'll take a jump through zero as a poor second */ 100 /* we'll take a jump through zero as a poor second */
98 cpu_reset(0); 101 cpu_reset(0);
99} 102}