From a90309860b0935805d49e75499fb8dc59fea8e94 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Fri, 2 Apr 2010 13:22:16 -0400 Subject: USB: deprecate the power/level sysfs attribute This patch (as1367) deprecates USB's power/level sysfs attribute in favor of the power/control attribute provided by the runtime PM core. The two attributes do the same thing. It would be nice to replace power/level with a symlink to power/control, but at the moment sysfs doesn't offer any way to do so. Signed-off-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- Documentation/usb/power-management.txt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'Documentation/usb') diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt index 2790ad4..b29d8e5 100644 --- a/Documentation/usb/power-management.txt +++ b/Documentation/usb/power-management.txt @@ -107,7 +107,9 @@ allowed to issue dynamic suspends. The user interface for controlling dynamic PM is located in the power/ subdirectory of each USB device's sysfs directory, that is, in /sys/bus/usb/devices/.../power/ where "..." is the device's ID. The -relevant attribute files are: wakeup, level, and autosuspend. +relevant attribute files are: wakeup, control, and autosuspend. +(There may also be a file named "level"; this file was deprecated +as of the 2.6.35 kernel and replaced by the "control" file.) power/wakeup @@ -120,7 +122,7 @@ relevant attribute files are: wakeup, level, and autosuspend. while the device is suspended, the change won't take effect until the following suspend.) - power/level + power/control This file contains one of two words: "on" or "auto". You can write those words to the file to change the @@ -148,14 +150,15 @@ relevant attribute files are: wakeup, level, and autosuspend. never to autosuspend. You can write a number to the file to change the autosuspend idle-delay time. -Writing "-1" to power/autosuspend and writing "on" to power/level do +Writing "-1" to power/autosuspend and writing "on" to power/control do essentially the same thing -- they both prevent the device from being autosuspended. Yes, this is a redundancy in the API. (In 2.6.21 writing "0" to power/autosuspend would prevent the device from being autosuspended; the behavior was changed in 2.6.22. The power/autosuspend attribute did not exist prior to 2.6.21, and the -power/level attribute did not exist prior to 2.6.22.) +power/level attribute did not exist prior to 2.6.22. power/control +was added in 2.6.34.) Changing the default idle-delay time @@ -212,7 +215,7 @@ among printers and scanners, but plenty of other types of device have the same deficiency. For this reason, by default the kernel disables autosuspend (the -power/level attribute is initialized to "on") for all devices other +power/control attribute is initialized to "on") for all devices other than hubs. Hubs, at least, appear to be reasonably well-behaved in this regard. @@ -373,7 +376,7 @@ usb_autopm_put_interface() in its close or release routine. But other patterns are possible. The autosuspend attempts mentioned above will often fail for one -reason or another. For example, the power/level attribute might be +reason or another. For example, the power/control attribute might be set to "on", or another interface in the same device might not be idle. This is perfectly normal. If the reason for failure was that the device hasn't been idle for long enough, a timer is scheduled to @@ -394,12 +397,12 @@ Drivers can enable autosuspend for their devices by calling in their probe() routine, if they know that the device is capable of suspending and resuming correctly. This is exactly equivalent to -writing "auto" to the device's power/level attribute. Likewise, +writing "auto" to the device's power/control attribute. Likewise, drivers can disable autosuspend by calling usb_disable_autosuspend(struct usb_device *udev); -This is exactly the same as writing "on" to the power/level attribute. +This is exactly the same as writing "on" to the power/control attribute. Sometimes a driver needs to make sure that remote wakeup is enabled during autosuspend. For example, there's not much point -- cgit v1.1