|
@@ -1860,10 +1860,13 @@ void device_pm_check_callbacks(struct device *dev)
|
|
|
{
|
|
|
spin_lock_irq(&dev->power.lock);
|
|
|
dev->power.no_pm_callbacks =
|
|
|
- (!dev->bus || pm_ops_is_empty(dev->bus->pm)) &&
|
|
|
- (!dev->class || pm_ops_is_empty(dev->class->pm)) &&
|
|
|
+ (!dev->bus || (pm_ops_is_empty(dev->bus->pm) &&
|
|
|
+ !dev->bus->suspend && !dev->bus->resume)) &&
|
|
|
+ (!dev->class || (pm_ops_is_empty(dev->class->pm) &&
|
|
|
+ !dev->class->suspend && !dev->class->resume)) &&
|
|
|
(!dev->type || pm_ops_is_empty(dev->type->pm)) &&
|
|
|
(!dev->pm_domain || pm_ops_is_empty(&dev->pm_domain->ops)) &&
|
|
|
- (!dev->driver || pm_ops_is_empty(dev->driver->pm));
|
|
|
+ (!dev->driver || (pm_ops_is_empty(dev->driver->pm) &&
|
|
|
+ !dev->driver->suspend && !dev->driver->resume));
|
|
|
spin_unlock_irq(&dev->power.lock);
|
|
|
}
|