summaryrefslogtreecommitdiffstats
path: root/include/asm-arm/arch-s3c2410/system.h
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2007-12-23 03:09:31 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-01-28 13:20:48 +0000
commitd652074ebcedd13c7ce760c7f3327f30862852fb (patch)
treec5675e72699a84c9bf10610d61852d996a20b948 /include/asm-arm/arch-s3c2410/system.h
parentcf08167c82b38ed9f6401e68b3c91fb11496f101 (diff)
[ARM] 4721/1: S3C24XX: Ensure watchdog clock is enbaled for hard reset
If the hard reset routine is using the watchdog, then ensure that the clock for the watchdog has been enabled before we try and issue a reset. 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/system.h')
-rw-r--r--include/asm-arm/arch-s3c2410/system.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/asm-arm/arch-s3c2410/system.h b/include/asm-arm/arch-s3c2410/system.h
index 63891786dfa..cb9cd9fb861 100644
--- a/include/asm-arm/arch-s3c2410/system.h
+++ b/include/asm-arm/arch-s3c2410/system.h
@@ -20,6 +20,9 @@
#include <asm/plat-s3c/regs-watchdog.h>
#include <asm/arch/regs-clock.h>
+#include <linux/clk.h>
+#include <linux/err.h>
+
void (*s3c24xx_idle)(void);
void (*s3c24xx_reset_hook)(void);
@@ -59,6 +62,8 @@ static void arch_idle(void)
static void
arch_reset(char mode)
{
+ struct clk *wdtclk;
+
if (mode == 's') {
cpu_reset(0);
}
@@ -70,6 +75,12 @@ arch_reset(char mode)
__raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */
+ wdtclk = clk_get(NULL, "watchdog");
+ if (!IS_ERR(wdtclk)) {
+ clk_enable(wdtclk);
+ } else
+ printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__);
+
/* put initial values into count and data */
__raw_writel(0x100, S3C2410_WTCNT);
__raw_writel(0x100, S3C2410_WTDAT);