aboutsummaryrefslogtreecommitdiff
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@st.com>2012-03-12 09:52:17 +0530
committerWim Van Sebroeck <wim@iguana.be>2012-05-30 07:56:44 +0200
commitd9df0ef1eb9e1048f0ab4a6e93c85f60c5594c2f (patch)
tree87c5d2a8d153a27472f27b0d6a3a2f70d173f329 /drivers/watchdog
parent4a516539faba13deca2399cff8faaa84d251a4ea (diff)
watchdog: sp805_wdt: Add clk_{un}prepare support
clk_{un}prepare() routines are required for required on some platforms to run part of clk enable/disable() routines from contexts that can schedule. This patch adds support for these routines in sp805 driver. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/sp805_wdt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c
index 18d4bcfd1bf..afcd1367654 100644
--- a/drivers/watchdog/sp805_wdt.c
+++ b/drivers/watchdog/sp805_wdt.c
@@ -130,9 +130,16 @@ static int wdt_config(struct watchdog_device *wdd, bool ping)
int ret;
if (!ping) {
+ ret = clk_prepare(wdt->clk);
+ if (ret) {
+ dev_err(&wdt->adev->dev, "clock prepare fail");
+ return ret;
+ }
+
ret = clk_enable(wdt->clk);
if (ret) {
dev_err(&wdt->adev->dev, "clock enable fail");
+ clk_unprepare(wdt->clk);
return ret;
}
}
@@ -184,6 +191,7 @@ static int wdt_disable(struct watchdog_device *wdd)
spin_unlock(&wdt->lock);
clk_disable(wdt->clk);
+ clk_unprepare(wdt->clk);
return 0;
}