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

Commit e3345db8 authored by Tomeu Vizoso's avatar Tomeu Vizoso Committed by Rafael J. Wysocki
Browse files

USB / PM: Allow USB devices to remain runtime-suspended when sleeping



Have dev_pm_ops.prepare return 1 for USB devices and ports so that USB
devices can remain runtime-suspended when the system goes to a sleep
state, if their wakeup state is correct and they have runtime PM enabled.

Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent aa8e54b5
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -168,12 +168,18 @@ static int usb_port_runtime_suspend(struct device *dev)

	return retval;
}

static int usb_port_prepare(struct device *dev)
{
	return 1;
}
#endif

static const struct dev_pm_ops usb_port_pm_ops = {
#ifdef CONFIG_PM
	.runtime_suspend =	usb_port_runtime_suspend,
	.runtime_resume =	usb_port_runtime_resume,
	.prepare =		usb_port_prepare,
#endif
};

+7 −1
Original line number Diff line number Diff line
@@ -316,7 +316,13 @@ static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)

static int usb_dev_prepare(struct device *dev)
{
	return 0;		/* Implement eventually? */
	struct usb_device *udev = to_usb_device(dev);

	/* Return 0 if the current wakeup setting is wrong, otherwise 1 */
	if (udev->do_remote_wakeup != device_may_wakeup(dev))
		return 0;

	return 1;
}

static void usb_dev_complete(struct device *dev)