• Alan Stern's avatar
    USB: add power/persist device attribute · b41a60ec
    Alan Stern authored
    This patch (as920) adds an extra level of protection to the
    USB-Persist facility.  Now it will apply by default only to hubs; for
    all other devices the user must enable it explicitly by setting the
    power/persist device attribute.
    
    The disconnect_all_children() routine in hub.c has been removed and
    its code placed inline.  This is the way it was originally as part of
    hub_pre_reset(); the revised usage in hub_reset_resume() is
    sufficiently different that the code can no longer be shared.
    Likewise, mark_children_for_reset() is now inline as part of
    hub_reset_resume().  The end result looks much cleaner than before.
    
    The sysfs interface is updated to add the new attribute file, and
    there are corresponding documentation updates.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    b41a60ec
sysfs-bus-usb 2.27 KB
What:		/sys/bus/usb/devices/.../power/autosuspend
Date:		March 2007
KernelVersion:	2.6.21
Contact:	Alan Stern <stern@rowland.harvard.edu>
Description:
		Each USB device directory will contain a file named
		power/autosuspend.  This file holds the time (in seconds)
		the device must be idle before it will be autosuspended.
		0 means the device will be autosuspended as soon as
		possible.  Negative values will prevent the device from
		being autosuspended at all, and writing a negative value
		will resume the device if it is already suspended.

		The autosuspend delay for newly-created devices is set to
		the value of the usbcore.autosuspend module parameter.

What:		/sys/bus/usb/devices/.../power/level
Date:		March 2007
KernelVersion:	2.6.21
Contact:	Alan Stern <stern@rowland.harvard.edu>
Description:
		Each USB device directory will contain a file named
		power/level.  This file holds a power-level setting for
		the device, one of "on", "auto", or "suspend".

		"on" means that the device is not allowed to autosuspend,
		although normal suspends for system sleep will still
		be honored.  "auto" means the device will autosuspend
		and autoresume in the usual manner, according to the
		capabilities of its driver.  "suspend" means the device
		is forced into a suspended state and it will not autoresume
		in response to I/O requests.  However remote-wakeup requests
		from the device may still be enabled (the remote-wakeup
		setting is controlled separately by the power/wakeup
		attribute).

		During normal use, devices should be left in the "auto"
		level.  The other levels are meant for administrative uses.
		If you want to suspend a device immediately but leave it
		free to wake up in response to I/O requests, you should
		write "0" to power/autosuspend.

What:		/sys/bus/usb/devices/.../power/persist
Date:		May 2007
KernelVersion:	2.6.23
Contact:	Alan Stern <stern@rowland.harvard.edu>
Description:
		If CONFIG_USB_PERSIST is set, then each USB device directory
		will contain a file named power/persist.  The file holds a
		boolean value (0 or 1) indicating whether or not the
		"USB-Persist" facility is enabled for the device.  Since the
		facility is inherently dangerous, it is disabled by default
		for all devices except hubs.  For more information, see
		Documentation/usb/persist.txt.