diff options
author | Steve French <sfrench@us.ibm.com> | 2009-04-20 19:59:09 +0000 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2009-04-20 19:59:09 +0000 |
commit | cbb7fe129bb2b836083ebcc256c43faff4b48cc2 (patch) | |
tree | 65998c06e712be5f7cb72543a7c0cc2d0b1b4459 /kernel/power/main.c | |
parent | 7b0c8fcff47a885743125dd843db64af41af5a61 (diff) | |
parent | a939b96cccdb65df80a52447ec8e4a6d79c56dbb (diff) | |
download | kernel-crypto-cbb7fe129bb2b836083ebcc256c43faff4b48cc2.tar.gz kernel-crypto-cbb7fe129bb2b836083ebcc256c43faff4b48cc2.tar.xz kernel-crypto-cbb7fe129bb2b836083ebcc256c43faff4b48cc2.zip |
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
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 f172f41858b..f99ed6a75ea 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c @@ -291,20 +291,26 @@ static int suspend_enter(suspend_state_t state) device_pm_lock(); + if (suspend_ops->prepare) { + error = suspend_ops->prepare(); + if (error) + goto Done; + } + error = device_power_down(PMSG_SUSPEND); if (error) { printk(KERN_ERR "PM: Some devices failed to power down\n"); - goto Done; + goto Platfrom_finish; } - if (suspend_ops->prepare) { - error = suspend_ops->prepare(); + if (suspend_ops->prepare_late) { + error = suspend_ops->prepare_late(); if (error) goto Power_up_devices; } if (suspend_test(TEST_PLATFORM)) - goto Platfrom_finish; + goto Platform_wake; error = disable_nonboot_cpus(); if (error || suspend_test(TEST_CPUS)) @@ -326,13 +332,17 @@ static int suspend_enter(suspend_state_t state) Enable_cpus: enable_nonboot_cpus(); - Platfrom_finish: - if (suspend_ops->finish) - suspend_ops->finish(); + Platform_wake: + if (suspend_ops->wake) + suspend_ops->wake(); Power_up_devices: device_power_up(PMSG_RESUME); + Platfrom_finish: + if (suspend_ops->finish) + suspend_ops->finish(); + Done: device_pm_unlock(); |