diff options
author | Ulrik Bech Hald <ubh@ti.com> | 2009-06-12 16:18:32 -0500 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2009-06-23 07:13:36 +0000 |
commit | 789cd4702bf830416d2e1794495407be42fe95ad (patch) | |
tree | 2fa371c73af28b622743dc05c2f57cd81a20e0b8 /drivers/watchdog/omap_wdt.c | |
parent | 90074dce5537e87b27125505bb89a373567a7ede (diff) | |
download | op-kernel-dev-789cd4702bf830416d2e1794495407be42fe95ad.zip op-kernel-dev-789cd4702bf830416d2e1794495407be42fe95ad.tar.gz |
[WATCHDOG] OMAP fixes: enable clock in probe, trigger timer reload
This patch contains two fixes:
1)In omap_wdt_probe() the watchdog is reset and disabled. This
requires register access and the clks needs to be enabled temporarily
2)In omap_wdt_open() the timer register needs to be reloaded
to trigger a new timer value (the default of 60s)
Tested on OMAP34xx platform (Zoom1)
Reviewed-by: Kevin Hilman <khilman@ti.deeprootsystems.com>
Signed-off-by: Ulrik Bech Hald <ubh@ti.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog/omap_wdt.c')
-rw-r--r-- | drivers/watchdog/omap_wdt.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index f271385..3ed571a 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -159,6 +159,7 @@ static int omap_wdt_open(struct inode *inode, struct file *file) file->private_data = (void *) wdev; omap_wdt_set_timeout(wdev); + omap_wdt_ping(wdev); /* trigger loading of new timeout value */ omap_wdt_enable(wdev); return nonseekable_open(inode, file); @@ -313,6 +314,9 @@ static int __devinit omap_wdt_probe(struct platform_device *pdev) platform_set_drvdata(pdev, wdev); + clk_enable(wdev->ick); + clk_enable(wdev->fck); + omap_wdt_disable(wdev); omap_wdt_adjust_timeout(timer_margin); @@ -332,6 +336,9 @@ static int __devinit omap_wdt_probe(struct platform_device *pdev) /* autogate OCP interface clock */ __raw_writel(0x01, wdev->base + OMAP_WATCHDOG_SYS_CONFIG); + clk_disable(wdev->ick); + clk_disable(wdev->fck); + omap_wdt_dev = pdev; return 0; |