@@ -107,7 +107,9 @@ allowed to issue dynamic suspends.
107
107
The user interface for controlling dynamic PM is located in the power/
108
108
subdirectory of each USB device's sysfs directory, that is, in
109
109
/sys/bus/usb/devices/.../power/ where "..." is the device's ID. The
110
- relevant attribute files are: wakeup, level, and autosuspend.
110
+ relevant attribute files are: wakeup, control, and autosuspend.
111
+ (There may also be a file named "level"; this file was deprecated
112
+ as of the 2.6.35 kernel and replaced by the "control" file.)
111
113
112
114
power/wakeup
113
115
@@ -120,7 +122,7 @@ relevant attribute files are: wakeup, level, and autosuspend.
120
122
while the device is suspended, the change won't take
121
123
effect until the following suspend.)
122
124
123
- power/level
125
+ power/control
124
126
125
127
This file contains one of two words: "on" or "auto".
126
128
You can write those words to the file to change the
@@ -148,14 +150,15 @@ relevant attribute files are: wakeup, level, and autosuspend.
148
150
never to autosuspend. You can write a number to the
149
151
file to change the autosuspend idle-delay time.
150
152
151
- Writing "-1" to power/autosuspend and writing "on" to power/level do
153
+ Writing "-1" to power/autosuspend and writing "on" to power/control do
152
154
essentially the same thing -- they both prevent the device from being
153
155
autosuspended. Yes, this is a redundancy in the API.
154
156
155
157
(In 2.6.21 writing "0" to power/autosuspend would prevent the device
156
158
from being autosuspended; the behavior was changed in 2.6.22. The
157
159
power/autosuspend attribute did not exist prior to 2.6.21, and the
158
- power/level attribute did not exist prior to 2.6.22.)
160
+ power/level attribute did not exist prior to 2.6.22. power/control
161
+ was added in 2.6.34.)
159
162
160
163
161
164
Changing the default idle-delay time
@@ -212,7 +215,7 @@ among printers and scanners, but plenty of other types of device have
212
215
the same deficiency.
213
216
214
217
For this reason, by default the kernel disables autosuspend (the
215
- power/level attribute is initialized to "on") for all devices other
218
+ power/control attribute is initialized to "on") for all devices other
216
219
than hubs. Hubs, at least, appear to be reasonably well-behaved in
217
220
this regard.
218
221
@@ -373,7 +376,7 @@ usb_autopm_put_interface() in its close or release routine. But other
373
376
patterns are possible.
374
377
375
378
The autosuspend attempts mentioned above will often fail for one
376
- reason or another. For example, the power/level attribute might be
379
+ reason or another. For example, the power/control attribute might be
377
380
set to "on", or another interface in the same device might not be
378
381
idle. This is perfectly normal. If the reason for failure was that
379
382
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
394
397
395
398
in their probe() routine, if they know that the device is capable of
396
399
suspending and resuming correctly. This is exactly equivalent to
397
- writing "auto" to the device's power/level attribute. Likewise,
400
+ writing "auto" to the device's power/control attribute. Likewise,
398
401
drivers can disable autosuspend by calling
399
402
400
403
usb_disable_autosuspend(struct usb_device *udev);
401
404
402
- This is exactly the same as writing "on" to the power/level attribute.
405
+ This is exactly the same as writing "on" to the power/control attribute.
403
406
404
407
Sometimes a driver needs to make sure that remote wakeup is enabled
405
408
during autosuspend. For example, there's not much point
0 commit comments