mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
watchdog: shwdt: Use finer grained clock control.
The clk enable/disable pairs can be pushed down to start/stop rather than probe/remove, along with the runtime PM callsites. This will allow us to keep the block powered off until userspace comes along and decides to do something with it. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
8c013d964a
commit
d42c97443d
@ -89,6 +89,7 @@ static int sh_wdt_start(struct watchdog_device *wdt_dev)
|
||||
u8 csr;
|
||||
|
||||
pm_runtime_get_sync(wdt->dev);
|
||||
clk_enable(wdt->clk);
|
||||
|
||||
spin_lock_irqsave(&wdt->lock, flags);
|
||||
|
||||
@ -140,6 +141,7 @@ static int sh_wdt_stop(struct watchdog_device *wdt_dev)
|
||||
|
||||
spin_unlock_irqrestore(&wdt->lock, flags);
|
||||
|
||||
clk_disable(wdt->clk);
|
||||
pm_runtime_put_sync(wdt->dev);
|
||||
|
||||
return 0;
|
||||
@ -247,12 +249,10 @@ static int __devinit sh_wdt_probe(struct platform_device *pdev)
|
||||
wdt->clk = NULL;
|
||||
}
|
||||
|
||||
clk_enable(wdt->clk);
|
||||
|
||||
wdt->base = devm_request_and_ioremap(wdt->dev, res);
|
||||
if (unlikely(!wdt->base)) {
|
||||
rc = -EADDRNOTAVAIL;
|
||||
goto out_disable;
|
||||
goto err;
|
||||
}
|
||||
|
||||
watchdog_set_nowayout(&sh_wdt_dev, nowayout);
|
||||
@ -276,7 +276,7 @@ static int __devinit sh_wdt_probe(struct platform_device *pdev)
|
||||
rc = watchdog_register_device(&sh_wdt_dev);
|
||||
if (unlikely(rc)) {
|
||||
dev_err(&pdev->dev, "Can't register watchdog (err=%d)\n", rc);
|
||||
goto out_disable;
|
||||
goto err;
|
||||
}
|
||||
|
||||
init_timer(&wdt->timer);
|
||||
@ -292,8 +292,7 @@ static int __devinit sh_wdt_probe(struct platform_device *pdev)
|
||||
|
||||
return 0;
|
||||
|
||||
out_disable:
|
||||
clk_disable(wdt->clk);
|
||||
err:
|
||||
clk_put(wdt->clk);
|
||||
|
||||
return rc;
|
||||
@ -308,7 +307,6 @@ static int __devexit sh_wdt_remove(struct platform_device *pdev)
|
||||
watchdog_unregister_device(&sh_wdt_dev);
|
||||
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
clk_disable(wdt->clk);
|
||||
clk_put(wdt->clk);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user