diff options
Diffstat (limited to 'Documentation/driver-model/driver.txt')
-rw-r--r-- | Documentation/driver-model/driver.txt | 68 |
1 files changed, 6 insertions, 62 deletions
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt index fabaca1ab1b0..59806c9761f7 100644 --- a/Documentation/driver-model/driver.txt +++ b/Documentation/driver-model/driver.txt | |||
@@ -14,8 +14,8 @@ struct device_driver { | |||
14 | int (*probe) (struct device * dev); | 14 | int (*probe) (struct device * dev); |
15 | int (*remove) (struct device * dev); | 15 | int (*remove) (struct device * dev); |
16 | 16 | ||
17 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 17 | int (*suspend) (struct device * dev, pm_message_t state); |
18 | int (*resume) (struct device * dev, u32 level); | 18 | int (*resume) (struct device * dev); |
19 | }; | 19 | }; |
20 | 20 | ||
21 | 21 | ||
@@ -194,69 +194,13 @@ device; i.e. anything in the device's driver_data field. | |||
194 | If the device is still present, it should quiesce the device and place | 194 | If the device is still present, it should quiesce the device and place |
195 | it into a supported low-power state. | 195 | it into a supported low-power state. |
196 | 196 | ||
197 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 197 | int (*suspend) (struct device * dev, pm_message_t state); |
198 | 198 | ||
199 | suspend is called to put the device in a low power state. There are | 199 | suspend is called to put the device in a low power state. |
200 | several stages to successfully suspending a device, which is denoted in | ||
201 | the @level parameter. Breaking the suspend transition into several | ||
202 | stages affords the platform flexibility in performing device power | ||
203 | management based on the requirements of the system and the | ||
204 | user-defined policy. | ||
205 | 200 | ||
206 | SUSPEND_NOTIFY notifies the device that a suspend transition is about | 201 | int (*resume) (struct device * dev); |
207 | to happen. This happens on system power state transitions to verify | ||
208 | that all devices can successfully suspend. | ||
209 | 202 | ||
210 | A driver may choose to fail on this call, which should cause the | 203 | Resume is used to bring a device back from a low power state. |
211 | entire suspend transition to fail. A driver should fail only if it | ||
212 | knows that the device will not be able to be resumed properly when the | ||
213 | system wakes up again. It could also fail if it somehow determines it | ||
214 | is in the middle of an operation too important to stop. | ||
215 | |||
216 | SUSPEND_DISABLE tells the device to stop I/O transactions. When it | ||
217 | stops transactions, or what it should do with unfinished transactions | ||
218 | is a policy of the driver. After this call, the driver should not | ||
219 | accept any other I/O requests. | ||
220 | |||
221 | SUSPEND_SAVE_STATE tells the device to save the context of the | ||
222 | hardware. This includes any bus-specific hardware state and | ||
223 | device-specific hardware state. A pointer to this saved state can be | ||
224 | stored in the device's saved_state field. | ||
225 | |||
226 | SUSPEND_POWER_DOWN tells the driver to place the device in the low | ||
227 | power state requested. | ||
228 | |||
229 | Whether suspend is called with a given level is a policy of the | ||
230 | platform. Some levels may be omitted; drivers must not assume the | ||
231 | reception of any level. However, all levels must be called in the | ||
232 | order above; i.e. notification will always come before disabling; | ||
233 | disabling the device will come before suspending the device. | ||
234 | |||
235 | All calls are made with interrupts enabled, except for the | ||
236 | SUSPEND_POWER_DOWN level. | ||
237 | |||
238 | int (*resume) (struct device * dev, u32 level); | ||
239 | |||
240 | Resume is used to bring a device back from a low power state. Like the | ||
241 | suspend transition, it happens in several stages. | ||
242 | |||
243 | RESUME_POWER_ON tells the driver to set the power state to the state | ||
244 | before the suspend call (The device could have already been in a low | ||
245 | power state before the suspend call to put in a lower power state). | ||
246 | |||
247 | RESUME_RESTORE_STATE tells the driver to restore the state saved by | ||
248 | the SUSPEND_SAVE_STATE suspend call. | ||
249 | |||
250 | RESUME_ENABLE tells the driver to start accepting I/O transactions | ||
251 | again. Depending on driver policy, the device may already have pending | ||
252 | I/O requests. | ||
253 | |||
254 | RESUME_POWER_ON is called with interrupts disabled. The other resume | ||
255 | levels are called with interrupts enabled. | ||
256 | |||
257 | As with the various suspend stages, the driver must not assume that | ||
258 | any other resume calls have been or will be made. Each call should be | ||
259 | self-contained and not dependent on any external state. | ||
260 | 204 | ||
261 | 205 | ||
262 | Attributes | 206 | Attributes |