We need clks enabled to read/write watchdog registers.
After talking to the clks during probe, disable them until
/dev/watchdog is opened.

Also fix resource.end field.

Cc: Wim Van Sebroeck <[EMAIL PROTECTED]>
Cc: Tony Lindgren <[EMAIL PROTECTED]>
Signed-off-by: Felipe Balbi <[EMAIL PROTECTED]>
---
 arch/arm/plat-omap/devices.c |    2 +-
 drivers/watchdog/omap_wdt.c  |   16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index c22bd5f..5297db5 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -309,7 +309,7 @@ static void omap_init_wdt(void)
        else
                return;
 
-       wdt_resources[0].end = wdt_resources[0].start + 0x4f;
+       wdt_resources[0].end = wdt_resources[0].start + SZ_4K;
 
        (void) platform_device_register(&omap_wdt_device);
 }
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index 7bcbb7f..2c9988a 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -349,6 +349,14 @@ static int __init omap_wdt_probe(struct platform_device 
*pdev)
 
        platform_set_drvdata(pdev, wdev);
 
+       if (cpu_is_omap16xx())
+               clk_enable(wdev->armwdt_ck);    /* Enable the clock */
+
+       if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
+               clk_enable(wdev->mpu_wdt_ick);    /* Enable the interface clock 
*/
+               clk_enable(wdev->mpu_wdt_fck);    /* Enable the functional 
clock */
+       }
+
        omap_wdt_disable(wdev);
        omap_wdt_adjust_timeout(timer_margin);
 
@@ -368,6 +376,14 @@ static int __init omap_wdt_probe(struct platform_device 
*pdev)
        /* autogate OCP interface clock */
        __raw_writel(0x01, wdev->base + OMAP_WATCHDOG_SYS_CONFIG);
 
+       if (cpu_is_omap16xx())
+               clk_disable(wdev->armwdt_ck);   /* Disable the clock */
+
+       if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
+               clk_disable(wdev->mpu_wdt_ick); /* Disable the clock */
+               clk_disable(wdev->mpu_wdt_fck); /* Disable the clock */
+       }
+
        omap_wdt_dev = pdev;
 
        return 0;
-- 
1.6.0.2.307.gc427

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to