From: Viresh Kumar Date: Mon, 12 Mar 2012 04:22:17 +0000 (+0530) Subject: watchdog: sp805_wdt: Add clk_{un}prepare support X-Git-Tag: v3.5-rc1~39^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d9df0ef1eb9e1048f0ab4a6e93c85f60c5594c2f;p=platform%2Fupstream%2Fkernel-adaptation-pc.git 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 Signed-off-by: Wim Van Sebroeck --- diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index 18d4bcf..afcd136 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; }