diff options
author | Colin Cross <ccross@android.com> | 2011-09-20 14:33:03 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2011-09-20 14:35:29 -0700 |
commit | caf9bf409e5e018de860e850a6d97ba5d96f5298 (patch) | |
tree | 86599123c2864c4fab047b6a784a1fd4bc88bb5a | |
parent | a6928c9e461d93f03d49cce0155cbae57b3d529f (diff) | |
download | kernel_samsung_tuna-caf9bf409e5e018de860e850a6d97ba5d96f5298.zip kernel_samsung_tuna-caf9bf409e5e018de860e850a6d97ba5d96f5298.tar.gz kernel_samsung_tuna-caf9bf409e5e018de860e850a6d97ba5d96f5298.tar.bz2 |
watchdog: omap_wdt: move suspend to suspend_noirq
Move suspend to suspend_noirq so the watchdog can catch problems
that occur during driver suspend.
Change-Id: I441f96efcd5a337b1b3d79f87311c888abb05b0a
Signed-off-by: Colin Cross <ccross@android.com>
-rw-r--r-- | drivers/watchdog/omap_wdt.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index f7cd96b..ad89d05 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -466,28 +466,30 @@ static int __devexit omap_wdt_remove(struct platform_device *pdev) * may not play well enough with NOWAYOUT... */ -static int omap_wdt_suspend(struct platform_device *pdev, pm_message_t state) +static int omap_wdt_suspend(struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); if (wdev->omap_wdt_users) { pm_runtime_get_sync(wdev->dev); omap_wdt_disable(wdev); - pm_runtime_put_sync(wdev->dev); + pm_runtime_put_sync_suspend(wdev->dev); } return 0; } -static int omap_wdt_resume(struct platform_device *pdev) +static int omap_wdt_resume(struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); if (wdev->omap_wdt_users) { pm_runtime_get_sync(wdev->dev); omap_wdt_enable(wdev); omap_wdt_ping(wdev); - pm_runtime_put_sync(wdev->dev); + pm_runtime_put_sync_suspend(wdev->dev); } return 0; @@ -498,15 +500,19 @@ static int omap_wdt_resume(struct platform_device *pdev) #define omap_wdt_resume NULL #endif +static const struct dev_pm_ops omap_wdt_pm_ops = { + .suspend_noirq = omap_wdt_suspend, + .resume_noirq = omap_wdt_resume, +}; + static struct platform_driver omap_wdt_driver = { .probe = omap_wdt_probe, .remove = __devexit_p(omap_wdt_remove), .shutdown = omap_wdt_shutdown, - .suspend = omap_wdt_suspend, - .resume = omap_wdt_resume, .driver = { .owner = THIS_MODULE, .name = "omap_wdt", + .pm = &omap_wdt_pm_ops, }, }; |