summaryrefslogtreecommitdiff
path: root/drivers/base/core.c
diff options
context:
space:
mode:
authorSravan Kumar Ambapuram <asravan@codeaurora.org>2014-03-25 15:00:54 +0530
committerSravan Kumar Ambapuram <asravan@codeaurora.org>2017-03-20 15:32:19 +0530
commitd36bb30811b9ea1467f9b10a5d701240230147b9 (patch)
tree65ee0177e77aace3046e4d3ddac9d7bee970490b /drivers/base/core.c
parentf39a5999e2473e890390e3a5aa794a2fd4256544 (diff)
drivercore: Avoid adding devices without pm_ops to dpm list
Devices without pm_ops are not required to be added in dpm list. It also helps in improving suspend/resume latencies. Change-Id: I19a85742fdb6f4d01363b69662ea6d7721a08b3a Signed-off-by: Sravan Kumar Ambapuram <asravan@codeaurora.org>
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r--drivers/base/core.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index bbe8e2efc677..3fa9096b27c2 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1116,7 +1116,13 @@ int device_add(struct device *dev)
error = dpm_sysfs_add(dev);
if (error)
goto DPMError;
- device_pm_add(dev);
+ if ((dev->pm_domain) || (dev->type && dev->type->pm)
+ || (dev->class && (dev->class->pm || dev->class->resume))
+ || (dev->bus && (dev->bus->pm || dev->bus->resume)) ||
+ (dev->driver && dev->driver->pm)) {
+ device_pm_add(dev);
+ }
+
if (MAJOR(dev->devt)) {
error = device_create_file(dev, &dev_attr_dev);