|
@@ -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);
|