]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - kernel/power/hibernate.c
PM / Sleep: Introduce "late suspend" and "early resume" of devices
[mv-sheeva.git] / kernel / power / hibernate.c
index 6d6d28870335831fa05c80428fefc05e20be3f69..a5d4cf0aa03e3ea908cc800198631bd9924cb096 100644 (file)
@@ -245,8 +245,8 @@ void swsusp_show_speed(struct timeval *start, struct timeval *stop,
  * create_image - Create a hibernation image.
  * @platform_mode: Whether or not to use the platform driver.
  *
- * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
- * and execute the drivers' .thaw_noirq() callbacks.
+ * Execute device drivers' "late" and "noirq" freeze callbacks, create a
+ * hibernation image and run the drivers' "noirq" and "early" thaw callbacks.
  *
  * Control reappears in this routine after the subsequent restore.
  */
@@ -254,7 +254,7 @@ static int create_image(int platform_mode)
 {
        int error;
 
-       error = dpm_suspend_noirq(PMSG_FREEZE);
+       error = dpm_suspend_end(PMSG_FREEZE);
        if (error) {
                printk(KERN_ERR "PM: Some devices failed to power down, "
                        "aborting hibernation\n");
@@ -306,7 +306,7 @@ static int create_image(int platform_mode)
  Platform_finish:
        platform_finish(platform_mode);
 
-       dpm_resume_noirq(in_suspend ?
+       dpm_resume_start(in_suspend ?
                (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE);
 
        return error;
@@ -394,16 +394,16 @@ int hibernation_snapshot(int platform_mode)
  * resume_target_kernel - Restore system state from a hibernation image.
  * @platform_mode: Whether or not to use the platform driver.
  *
- * Execute device drivers' .freeze_noirq() callbacks, restore the contents of
- * highmem that have not been restored yet from the image and run the low-level
- * code that will restore the remaining contents of memory and switch to the
- * just restored target kernel.
+ * Execute device drivers' "noirq" and "late" freeze callbacks, restore the
+ * contents of highmem that have not been restored yet from the image and run
+ * the low-level code that will restore the remaining contents of memory and
+ * switch to the just restored target kernel.
  */
 static int resume_target_kernel(bool platform_mode)
 {
        int error;
 
-       error = dpm_suspend_noirq(PMSG_QUIESCE);
+       error = dpm_suspend_end(PMSG_QUIESCE);
        if (error) {
                printk(KERN_ERR "PM: Some devices failed to power down, "
                        "aborting resume\n");
@@ -460,7 +460,7 @@ static int resume_target_kernel(bool platform_mode)
  Cleanup:
        platform_restore_cleanup(platform_mode);
 
-       dpm_resume_noirq(PMSG_RECOVER);
+       dpm_resume_start(PMSG_RECOVER);
 
        return error;
 }
@@ -518,7 +518,7 @@ int hibernation_platform_enter(void)
                goto Resume_devices;
        }
 
-       error = dpm_suspend_noirq(PMSG_HIBERNATE);
+       error = dpm_suspend_end(PMSG_HIBERNATE);
        if (error)
                goto Resume_devices;
 
@@ -549,7 +549,7 @@ int hibernation_platform_enter(void)
  Platform_finish:
        hibernation_ops->finish();
 
-       dpm_resume_noirq(PMSG_RESTORE);
+       dpm_resume_start(PMSG_RESTORE);
 
  Resume_devices:
        entering_platform_hibernation = false;