diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/power/disk.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/power/disk.c b/kernel/power/disk.c index d79feeb45459..f5079231383e 100644 --- a/kernel/power/disk.c +++ b/kernel/power/disk.c @@ -30,6 +30,22 @@ dev_t swsusp_resume_device; sector_t swsusp_resume_block; /** + * platform_prepare - prepare the machine for hibernation using the + * platform driver if so configured and return an error code if it fails + */ + +static inline int platform_prepare(void) +{ + int error = 0; + + if (pm_disk_mode == PM_DISK_PLATFORM) { + if (pm_ops && pm_ops->prepare) + error = pm_ops->prepare(PM_SUSPEND_DISK); + } + return error; +} + +/** * power_down - Shut machine down for hibernate. * @mode: Suspend-to-disk mode * @@ -91,9 +107,15 @@ static int prepare_processes(void) goto thaw; } + error = platform_prepare(); + if (error) + goto thaw; + /* Free memory before shutting down devices. */ if (!(error = swsusp_shrink_memory())) return 0; + + platform_finish(); thaw: thaw_processes(); enable_cpus: |