diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2009-12-08 15:49:48 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-23 14:34:09 -0500 |
commit | baf67741bf52b985e318bed3c4acadcda5351e08 (patch) | |
tree | 3f80d00eaf81b1a547b0bc2c55c14cdcd1f5bc0d /Documentation/usb | |
parent | f42ecb2808db5386f983d593a7c08d3ea3b94a27 (diff) |
USB: power management documentation update
This patch (as1313) updates the documentation concerning USB power
management.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/usb')
-rw-r--r-- | Documentation/usb/power-management.txt | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt index c7c1dc2f8017..3bf6818c8cf5 100644 --- a/Documentation/usb/power-management.txt +++ b/Documentation/usb/power-management.txt | |||
@@ -71,12 +71,10 @@ being accessed through sysfs, then it definitely is idle. | |||
71 | Forms of dynamic PM | 71 | Forms of dynamic PM |
72 | ------------------- | 72 | ------------------- |
73 | 73 | ||
74 | Dynamic suspends can occur in two ways: manual and automatic. | 74 | Dynamic suspends occur when the kernel decides to suspend an idle |
75 | "Manual" means that the user has told the kernel to suspend a device, | 75 | device. This is called "autosuspend" for short. In general, a device |
76 | whereas "automatic" means that the kernel has decided all by itself to | 76 | won't be autosuspended unless it has been idle for some minimum period |
77 | suspend a device. Automatic suspend is called "autosuspend" for | 77 | of time, the so-called idle-delay time. |
78 | short. In general, a device won't be autosuspended unless it has been | ||
79 | idle for some minimum period of time, the so-called idle-delay time. | ||
80 | 78 | ||
81 | Of course, nothing the kernel does on its own initiative should | 79 | Of course, nothing the kernel does on its own initiative should |
82 | prevent the computer or its devices from working properly. If a | 80 | prevent the computer or its devices from working properly. If a |
@@ -96,10 +94,11 @@ idle. | |||
96 | We can categorize power management events in two broad classes: | 94 | We can categorize power management events in two broad classes: |
97 | external and internal. External events are those triggered by some | 95 | external and internal. External events are those triggered by some |
98 | agent outside the USB stack: system suspend/resume (triggered by | 96 | agent outside the USB stack: system suspend/resume (triggered by |
99 | userspace), manual dynamic suspend/resume (also triggered by | 97 | userspace), manual dynamic resume (also triggered by userspace), and |
100 | userspace), and remote wakeup (triggered by the device). Internal | 98 | remote wakeup (triggered by the device). Internal events are those |
101 | events are those triggered within the USB stack: autosuspend and | 99 | triggered within the USB stack: autosuspend and autoresume. Note that |
102 | autoresume. | 100 | all dynamic suspend events are internal; external agents are not |
101 | allowed to issue dynamic suspends. | ||
103 | 102 | ||
104 | 103 | ||
105 | The user interface for dynamic PM | 104 | The user interface for dynamic PM |
@@ -145,9 +144,9 @@ relevant attribute files are: wakeup, level, and autosuspend. | |||
145 | number of seconds the device should remain idle before | 144 | number of seconds the device should remain idle before |
146 | the kernel will autosuspend it (the idle-delay time). | 145 | the kernel will autosuspend it (the idle-delay time). |
147 | The default is 2. 0 means to autosuspend as soon as | 146 | The default is 2. 0 means to autosuspend as soon as |
148 | the device becomes idle, and -1 means never to | 147 | the device becomes idle, and negative values mean |
149 | autosuspend. You can write a number to the file to | 148 | never to autosuspend. You can write a number to the |
150 | change the autosuspend idle-delay time. | 149 | file to change the autosuspend idle-delay time. |
151 | 150 | ||
152 | Writing "-1" to power/autosuspend and writing "on" to power/level do | 151 | Writing "-1" to power/autosuspend and writing "on" to power/level do |
153 | essentially the same thing -- they both prevent the device from being | 152 | essentially the same thing -- they both prevent the device from being |
@@ -377,9 +376,9 @@ the device hasn't been idle for long enough, a delayed workqueue | |||
377 | routine is automatically set up to carry out the operation when the | 376 | routine is automatically set up to carry out the operation when the |
378 | autosuspend idle-delay has expired. | 377 | autosuspend idle-delay has expired. |
379 | 378 | ||
380 | Autoresume attempts also can fail. This will happen if power/level is | 379 | Autoresume attempts also can fail, although failure would mean that |
381 | set to "suspend" or if the device doesn't manage to resume properly. | 380 | the device is no longer present or operating properly. Unlike |
382 | Unlike autosuspend, there's no delay for an autoresume. | 381 | autosuspend, there's no delay for an autoresume. |
383 | 382 | ||
384 | 383 | ||
385 | Other parts of the driver interface | 384 | Other parts of the driver interface |
@@ -527,13 +526,3 @@ succeed, it may still remain active and thus cause the system to | |||
527 | resume as soon as the system suspend is complete. Or the remote | 526 | resume as soon as the system suspend is complete. Or the remote |
528 | wakeup may fail and get lost. Which outcome occurs depends on timing | 527 | wakeup may fail and get lost. Which outcome occurs depends on timing |
529 | and on the hardware and firmware design. | 528 | and on the hardware and firmware design. |
530 | |||
531 | More interestingly, a device might undergo a manual resume or | ||
532 | autoresume during system suspend. With current kernels this shouldn't | ||
533 | happen, because manual resumes must be initiated by userspace and | ||
534 | autoresumes happen in response to I/O requests, but all user processes | ||
535 | and I/O should be quiescent during a system suspend -- thanks to the | ||
536 | freezer. However there are plans to do away with the freezer, which | ||
537 | would mean these things would become possible. If and when this comes | ||
538 | about, the USB core will carefully arrange matters so that either type | ||
539 | of resume will block until the entire system has resumed. | ||