Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa582c48 authored by Sravan Kumar Ambapuram's avatar Sravan Kumar Ambapuram Committed by mashaikh
Browse files

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: default avatarSravan Kumar Ambapuram <asravan@codeaurora.org>
parent d4bc64ea
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1045,7 +1045,13 @@ int device_add(struct device *dev)
	error = dpm_sysfs_add(dev);
	if (error)
		goto DPMError;
	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);
	}


	/* Notify clients of device addition.  This call must come
	 * after dpm_sysfs_add() and before kobject_uevent().
+12 −0
Original line number Diff line number Diff line
@@ -165,6 +165,12 @@ void device_pm_move_before(struct device *deva, struct device *devb)
	pr_debug("PM: Moving %s:%s before %s:%s\n",
		 deva->bus ? deva->bus->name : "No Bus", dev_name(deva),
		 devb->bus ? devb->bus->name : "No Bus", dev_name(devb));
	if (!((devb->pm_domain) || (devb->type && devb->type->pm)
		|| (devb->class && (devb->class->pm || devb->class->resume))
		|| (devb->bus && (devb->bus->pm || devb->bus->resume)) ||
		(devb->driver && devb->driver->pm))) {
		device_pm_add(devb);
	}
	/* Delete deva from dpm_list and reinsert before devb. */
	list_move_tail(&deva->power.entry, &devb->power.entry);
}
@@ -179,6 +185,12 @@ void device_pm_move_after(struct device *deva, struct device *devb)
	pr_debug("PM: Moving %s:%s after %s:%s\n",
		 deva->bus ? deva->bus->name : "No Bus", dev_name(deva),
		 devb->bus ? devb->bus->name : "No Bus", dev_name(devb));
	if (!((devb->pm_domain) || (devb->type && devb->type->pm)
		|| (devb->class && (devb->class->pm || devb->class->resume))
		|| (devb->bus && (devb->bus->pm || devb->bus->resume)) ||
		(devb->driver && devb->driver->pm))) {
		device_pm_add(devb);
	}
	/* Delete deva from dpm_list and reinsert after devb. */
	list_move(&deva->power.entry, &devb->power.entry);
}