Merge branch 'misc.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / drivers / acpi / x86 / s2idle.c
index 3a30846..bd92b54 100644 (file)
@@ -449,25 +449,30 @@ int acpi_s2idle_prepare_late(void)
        if (pm_debug_messages_on)
                lpi_check_constraints();
 
-       if (lps0_dsm_func_mask_microsoft > 0) {
+       /* Screen off */
+       if (lps0_dsm_func_mask > 0)
+               acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+                                       ACPI_LPS0_SCREEN_OFF_AMD :
+                                       ACPI_LPS0_SCREEN_OFF,
+                                       lps0_dsm_func_mask, lps0_dsm_guid);
+
+       if (lps0_dsm_func_mask_microsoft > 0)
                acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
                                lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_ENTRY,
-                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+
+       /* LPS0 entry */
+       if (lps0_dsm_func_mask > 0)
+               acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+                                       ACPI_LPS0_ENTRY_AMD :
+                                       ACPI_LPS0_ENTRY,
+                                       lps0_dsm_func_mask, lps0_dsm_guid);
+       if (lps0_dsm_func_mask_microsoft > 0) {
                acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
                                lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
-       } else if (acpi_s2idle_vendor_amd()) {
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-       } else {
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
+               /* modern standby entry */
+               acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_ENTRY,
+                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
        }
-
        return 0;
 }
 
@@ -476,24 +481,30 @@ void acpi_s2idle_restore_early(void)
        if (!lps0_device_handle || sleep_no_lps0)
                return;
 
-       if (lps0_dsm_func_mask_microsoft > 0) {
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
-                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+       /* Modern standby exit */
+       if (lps0_dsm_func_mask_microsoft > 0)
                acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT,
                                lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
-                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
-       } else if (acpi_s2idle_vendor_amd()) {
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-       } else {
+
+       /* LPS0 exit */
+       if (lps0_dsm_func_mask > 0)
+               acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+                                       ACPI_LPS0_EXIT_AMD :
+                                       ACPI_LPS0_EXIT,
+                                       lps0_dsm_func_mask, lps0_dsm_guid);
+       if (lps0_dsm_func_mask_microsoft > 0)
                acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
+                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+
+       /* Screen on */
+       if (lps0_dsm_func_mask_microsoft > 0)
                acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
-                               lps0_dsm_func_mask, lps0_dsm_guid);
-       }
+                               lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+       if (lps0_dsm_func_mask > 0)
+               acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+                                       ACPI_LPS0_SCREEN_ON_AMD :
+                                       ACPI_LPS0_SCREEN_ON,
+                                       lps0_dsm_func_mask, lps0_dsm_guid);
 }
 
 static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {