*     before device drivers' late suspend callbacks are executed.  It returns
  *     0 on success or a negative error code otherwise, in which case the
  *     system cannot enter the desired sleep state (@prepare_late(), @enter(),
- *     @wake(), and @finish() will not be called in that case).
+ *     and @wake() will not be called in that case).
  *
  * @prepare_late: Finish preparing the platform for entering the system sleep
  *     state indicated by @begin().
  *     @prepare_late is called before disabling nonboot CPUs and after
  *     device drivers' late suspend callbacks have been executed.  It returns
  *     0 on success or a negative error code otherwise, in which case the
- *     system cannot enter the desired sleep state (@enter() and @wake()).
+ *     system cannot enter the desired sleep state (@enter() will not be
+ *     executed).
  *
  * @enter: Enter the system sleep state indicated by @begin() or represented by
  *     the argument if @begin() is not implemented.
  *     resume callbacks are executed.
  *     This callback is optional, but should be implemented by the platforms
  *     that implement @prepare_late().  If implemented, it is always called
- *     after @enter(), even if @enter() fails.
+ *     after @prepare_late and @enter(), even if one of them fails.
  *
  * @finish: Finish wake-up of the platform.
  *     @finish is called right prior to calling device drivers' regular suspend
  *     callbacks.
  *     This callback is optional, but should be implemented by the platforms
  *     that implement @prepare().  If implemented, it is always called after
- *     @enter() and @wake(), if implemented, even if any of them fails.
+ *     @enter() and @wake(), even if any of them fails.  It is executed after
+ *     a failing @prepare.
  *
  * @end: Called by the PM core right after resuming devices, to indicate to
  *     the platform that the system has returned to the working state or
 
        if (suspend_ops->prepare) {
                error = suspend_ops->prepare();
                if (error)
-                       return error;
+                       goto Platform_finish;
        }
 
        error = dpm_suspend_noirq(PMSG_SUSPEND);
        if (error) {
                printk(KERN_ERR "PM: Some devices failed to power down\n");
-               goto Platfrom_finish;
+               goto Platform_finish;
        }
 
        if (suspend_ops->prepare_late) {
                error = suspend_ops->prepare_late();
                if (error)
-                       goto Power_up_devices;
+                       goto Platform_wake;
        }
 
        if (suspend_test(TEST_PLATFORM))
        if (suspend_ops->wake)
                suspend_ops->wake();
 
- Power_up_devices:
        dpm_resume_noirq(PMSG_RESUME);
 
- Platfrom_finish:
+ Platform_finish:
        if (suspend_ops->finish)
                suspend_ops->finish();