aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@st.com>2012-03-12 00:22:17 -0400
committerWim Van Sebroeck <wim@iguana.be>2012-05-30 01:56:44 -0400
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 18d4bcfd1bfc..afcd13676542 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)
130 int ret; 130 int ret;
131 131
132 if (!ping) { 132 if (!ping) {
133 ret = clk_prepare(wdt->clk);
134 if (ret) {
135 dev_err(&wdt->adev->dev, "clock prepare fail");
136 return ret;
137 }
138
133 ret = clk_enable(wdt->clk); 139 ret = clk_enable(wdt->clk);
134 if (ret) { 140 if (ret) {
135 dev_err(&wdt->adev->dev, "clock enable fail"); 141 dev_err(&wdt->adev->dev, "clock enable fail");
142 clk_unprepare(wdt->clk);
136 return ret; 143 return ret;
137 } 144 }
138 } 145 }
@@ -184,6 +191,7 @@ static int wdt_disable(struct watchdog_device *wdd)
184 spin_unlock(&wdt->lock); 191 spin_unlock(&wdt->lock);
185 192
186 clk_disable(wdt->clk); 193 clk_disable(wdt->clk);
194 clk_unprepare(wdt->clk);
187 195
188 return 0; 196 return 0;
189} 197}