diff options
Diffstat (limited to 'kernel/power/main.c')
| -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 | ||
