callback = RPM_GET_CALLBACK(dev, runtime_suspend);
 
+       dev_pm_enable_wake_irq_check(dev, true);
        ret = callback ? callback(dev) : 0;
        if (ret)
                goto err;
 
+       dev_pm_enable_wake_irq_complete(dev);
+
        /*
         * If the device can stay in suspend after the system-wide transition
         * to the working state that will follow, drop the children counter of
        return 0;
 
 err:
+       dev_pm_disable_wake_irq_check(dev, true);
        pm_runtime_enable(dev);
        return ret;
 }
 
        callback = RPM_GET_CALLBACK(dev, runtime_resume);
 
+       dev_pm_disable_wake_irq_check(dev, false);
        ret = callback ? callback(dev) : 0;
        if (ret) {
                pm_runtime_set_suspended(dev);
+               dev_pm_enable_wake_irq_check(dev, false);
                goto out;
        }