diff options
author | Len Brown <len.brown@intel.com> | 2005-12-06 17:31:30 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-12-06 17:31:30 -0500 |
commit | 3d5271f9883cba7b54762bc4fe027d4172f06db7 (patch) | |
tree | ab8a881a14478598a0c8bda0d26c62cdccfffd6d /Documentation/driver-model | |
parent | 378b2556f4e09fa6f87ff0cb5c4395ff28257d02 (diff) | |
parent | 9115a6c787596e687df03010d97fccc5e0762506 (diff) |
Pull release into acpica branch
Diffstat (limited to 'Documentation/driver-model')
-rw-r--r-- | Documentation/driver-model/driver.txt | 68 | ||||
-rw-r--r-- | Documentation/driver-model/porting.txt | 2 |
2 files changed, 7 insertions, 63 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 |
diff --git a/Documentation/driver-model/porting.txt b/Documentation/driver-model/porting.txt index ff2fef2107f0..98b233cb8b36 100644 --- a/Documentation/driver-model/porting.txt +++ b/Documentation/driver-model/porting.txt | |||
@@ -350,7 +350,7 @@ When a driver is registered, the bus's list of devices is iterated | |||
350 | over. bus->match() is called for each device that is not already | 350 | over. bus->match() is called for each device that is not already |
351 | claimed by a driver. | 351 | claimed by a driver. |
352 | 352 | ||
353 | When a device is successfully bound to a device, device->driver is | 353 | When a device is successfully bound to a driver, device->driver is |
354 | set, the device is added to a per-driver list of devices, and a | 354 | set, the device is added to a per-driver list of devices, and a |
355 | symlink is created in the driver's sysfs directory that points to the | 355 | symlink is created in the driver's sysfs directory that points to the |
356 | device's physical directory: | 356 | device's physical directory: |