USB: implement usb_enable_autosuspend
commit088f7fec8a0e683db72fd8826c5d3ab914e197b1
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 8 Jan 2010 17:56:54 +0000 (8 12:56 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:54:10 +0000 (2 14:54 -0800)
tree971ef100d0db9727e4403865b67c72de62e8247a
parent0c4db6df915bc470f0cd32fe48287fa6eb6adfb4
USB: implement usb_enable_autosuspend

This patch (as1326) adds usb_enable_autosuspend() and
usb_disable_autosuspend() routines for use by drivers.  If a driver
knows that its device can handle suspends and resumes correctly, it
can enable autosuspend all by itself.  This is equivalent to the user
writing "auto" to the device's power/level attribute.

The implementation differs slightly from what it used to be.  Now
autosuspend is disabled simply by doing usb_autoresume_device() (to
increment the usage counter) and enabled by doing
usb_autosuspend_device() (to decrement the usage counter).

The set_level() attribute method is updated to use the new routines,
and the USB Power-Management documentation is updated.

The patch adds a usb_enable_autosuspend() call to the hub driver's
probe routine, allowing the special-case code for hubs in quirks.c to
be removed.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Documentation/usb/power-management.txt
drivers/usb/core/driver.c
drivers/usb/core/hub.c
drivers/usb/core/quirks.c
drivers/usb/core/sysfs.c
include/linux/usb.h