]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
sh: allow runtime pm without suspend/resume callbacks
authorMagnus Damm <damm@opensource.se>
Thu, 3 Dec 2009 12:31:45 +0000 (12:31 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 4 Dec 2009 04:42:37 +0000 (13:42 +0900)
This patch updates the Runtime PM code for SuperH Mobile
to allow drivers to have NULL as pm or callback value.
With this in place there is no need for no-op functions.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/cpu/shmobile/pm_runtime.c

index 7c615b17e209f97c96cadf2e69249518713d9e35..6dcb8166a64dcf2b6fc7b613849bfb7ed4361144 100644 (file)
@@ -45,12 +45,14 @@ static int __platform_pm_runtime_resume(struct platform_device *pdev)
 
        dev_dbg(d, "__platform_pm_runtime_resume() [%d]\n", hwblk);
 
-       if (d->driver && d->driver->pm && d->driver->pm->runtime_resume) {
+       if (d->driver) {
                hwblk_enable(hwblk_info, hwblk);
                ret = 0;
 
                if (test_bit(PDEV_ARCHDATA_FLAG_SUSP, &ad->flags)) {
-                       ret = d->driver->pm->runtime_resume(d);
+                       if (d->driver->pm && d->driver->pm->runtime_resume)
+                               ret = d->driver->pm->runtime_resume(d);
+
                        if (!ret)
                                clear_bit(PDEV_ARCHDATA_FLAG_SUSP, &ad->flags);
                        else
@@ -73,12 +75,15 @@ static int __platform_pm_runtime_suspend(struct platform_device *pdev)
 
        dev_dbg(d, "__platform_pm_runtime_suspend() [%d]\n", hwblk);
 
-       if (d->driver && d->driver->pm && d->driver->pm->runtime_suspend) {
+       if (d->driver) {
                BUG_ON(!test_bit(PDEV_ARCHDATA_FLAG_IDLE, &ad->flags));
+               ret = 0;
 
-               hwblk_enable(hwblk_info, hwblk);
-               ret = d->driver->pm->runtime_suspend(d);
-               hwblk_disable(hwblk_info, hwblk);
+               if (d->driver->pm && d->driver->pm->runtime_suspend) {
+                       hwblk_enable(hwblk_info, hwblk);
+                       ret = d->driver->pm->runtime_suspend(d);
+                       hwblk_disable(hwblk_info, hwblk);
+               }
 
                if (!ret) {
                        set_bit(PDEV_ARCHDATA_FLAG_SUSP, &ad->flags);