|
@@ -297,6 +297,19 @@ static int suspend_enter(suspend_state_t state)
|
|
goto Done;
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (suspend_ops->prepare) {
|
|
|
|
+ error = suspend_ops->prepare();
|
|
|
|
+ if (error)
|
|
|
|
+ goto Power_up_devices;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (suspend_test(TEST_PLATFORM))
|
|
|
|
+ goto Platfrom_finish;
|
|
|
|
+
|
|
|
|
+ error = disable_nonboot_cpus();
|
|
|
|
+ if (error || suspend_test(TEST_CPUS))
|
|
|
|
+ goto Enable_cpus;
|
|
|
|
+
|
|
arch_suspend_disable_irqs();
|
|
arch_suspend_disable_irqs();
|
|
BUG_ON(!irqs_disabled());
|
|
BUG_ON(!irqs_disabled());
|
|
|
|
|
|
@@ -310,6 +323,14 @@ static int suspend_enter(suspend_state_t state)
|
|
arch_suspend_enable_irqs();
|
|
arch_suspend_enable_irqs();
|
|
BUG_ON(irqs_disabled());
|
|
BUG_ON(irqs_disabled());
|
|
|
|
|
|
|
|
+ Enable_cpus:
|
|
|
|
+ enable_nonboot_cpus();
|
|
|
|
+
|
|
|
|
+ Platfrom_finish:
|
|
|
|
+ if (suspend_ops->finish)
|
|
|
|
+ suspend_ops->finish();
|
|
|
|
+
|
|
|
|
+ Power_up_devices:
|
|
device_power_up(PMSG_RESUME);
|
|
device_power_up(PMSG_RESUME);
|
|
|
|
|
|
Done:
|
|
Done:
|
|
@@ -346,23 +367,8 @@ int suspend_devices_and_enter(suspend_state_t state)
|
|
if (suspend_test(TEST_DEVICES))
|
|
if (suspend_test(TEST_DEVICES))
|
|
goto Recover_platform;
|
|
goto Recover_platform;
|
|
|
|
|
|
- if (suspend_ops->prepare) {
|
|
|
|
- error = suspend_ops->prepare();
|
|
|
|
- if (error)
|
|
|
|
- goto Resume_devices;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (suspend_test(TEST_PLATFORM))
|
|
|
|
- goto Finish;
|
|
|
|
|
|
+ suspend_enter(state);
|
|
|
|
|
|
- error = disable_nonboot_cpus();
|
|
|
|
- if (!error && !suspend_test(TEST_CPUS))
|
|
|
|
- suspend_enter(state);
|
|
|
|
-
|
|
|
|
- enable_nonboot_cpus();
|
|
|
|
- Finish:
|
|
|
|
- if (suspend_ops->finish)
|
|
|
|
- suspend_ops->finish();
|
|
|
|
Resume_devices:
|
|
Resume_devices:
|
|
suspend_test_start();
|
|
suspend_test_start();
|
|
device_resume(PMSG_RESUME);
|
|
device_resume(PMSG_RESUME);
|