Merge branch 's3c24xx-updates' of git://git.fluff.org/bjdooks/linux
[sfrench/cifs-2.6.git] / 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);