diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/power/main.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c index f172f41858bb..f99ed6a75eac 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -291,20 +291,26 @@ static int suspend_enter(suspend_state_t state) | |||
291 | 291 | ||
292 | device_pm_lock(); | 292 | device_pm_lock(); |
293 | 293 | ||
294 | if (suspend_ops->prepare) { | ||
295 | error = suspend_ops->prepare(); | ||
296 | if (error) | ||
297 | goto Done; | ||
298 | } | ||
299 | |||
294 | error = device_power_down(PMSG_SUSPEND); | 300 | error = device_power_down(PMSG_SUSPEND); |
295 | if (error) { | 301 | if (error) { |
296 | printk(KERN_ERR "PM: Some devices failed to power down\n"); | 302 | printk(KERN_ERR "PM: Some devices failed to power down\n"); |
297 | goto Done; | 303 | goto Platfrom_finish; |
298 | } | 304 | } |
299 | 305 | ||
300 | if (suspend_ops->prepare) { | 306 | if (suspend_ops->prepare_late) { |
301 | error = suspend_ops->prepare(); | 307 | error = suspend_ops->prepare_late(); |
302 | if (error) | 308 | if (error) |
303 | goto Power_up_devices; | 309 | goto Power_up_devices; |
304 | } | 310 | } |
305 | 311 | ||
306 | if (suspend_test(TEST_PLATFORM)) | 312 | if (suspend_test(TEST_PLATFORM)) |
307 | goto Platfrom_finish; | 313 | goto Platform_wake; |
308 | 314 | ||
309 | error = disable_nonboot_cpus(); | 315 | error = disable_nonboot_cpus(); |
310 | if (error || suspend_test(TEST_CPUS)) | 316 | if (error || suspend_test(TEST_CPUS)) |
@@ -326,13 +332,17 @@ static int suspend_enter(suspend_state_t state) | |||
326 | Enable_cpus: | 332 | Enable_cpus: |
327 | enable_nonboot_cpus(); | 333 | enable_nonboot_cpus(); |
328 | 334 | ||
329 | Platfrom_finish: | 335 | Platform_wake: |
330 | if (suspend_ops->finish) | 336 | if (suspend_ops->wake) |
331 | suspend_ops->finish(); | 337 | suspend_ops->wake(); |
332 | 338 | ||
333 | Power_up_devices: | 339 | Power_up_devices: |
334 | device_power_up(PMSG_RESUME); | 340 | device_power_up(PMSG_RESUME); |
335 | 341 | ||
342 | Platfrom_finish: | ||
343 | if (suspend_ops->finish) | ||
344 | suspend_ops->finish(); | ||
345 | |||
336 | Done: | 346 | Done: |
337 | device_pm_unlock(); | 347 | device_pm_unlock(); |
338 | 348 | ||