watchdog: hpwdt (12/12): Make NMI decoding a compile-time option
[firefly-linux-kernel-4.4.55.git] / drivers / acpi / wakeup.c
index 388747a7ef4fc261b4e09db7866bc86bb9b17570..c80537bc3234dd012a3e047907ad0c572b2e6f6a 100644 (file)
@@ -64,13 +64,14 @@ void acpi_enable_wakeup_device(u8 sleep_state)
                struct acpi_device *dev =
                        container_of(node, struct acpi_device, wakeup_list);
 
-               if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled
+               if (!dev->wakeup.flags.valid
+                   || !(dev->wakeup.state.enabled || dev->wakeup.prepare_count)
                    || sleep_state > (u32) dev->wakeup.sleep_state)
                        continue;
 
                /* The wake-up power should have been enabled already. */
-               acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
-                               ACPI_GPE_TYPE_WAKE);
+               acpi_gpe_wakeup(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
+                               ACPI_GPE_ENABLE);
        }
 }
 
@@ -89,13 +90,16 @@ void acpi_disable_wakeup_device(u8 sleep_state)
                struct acpi_device *dev =
                        container_of(node, struct acpi_device, wakeup_list);
 
-               if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled
+               if (!dev->wakeup.flags.valid
+                   || !(dev->wakeup.state.enabled || dev->wakeup.prepare_count)
                    || (sleep_state > (u32) dev->wakeup.sleep_state))
                        continue;
 
-               acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
-                               ACPI_GPE_TYPE_WAKE);
-               acpi_disable_wakeup_device_power(dev);
+               acpi_gpe_wakeup(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
+                               ACPI_GPE_DISABLE);
+
+               if (dev->wakeup.state.enabled)
+                       acpi_disable_wakeup_device_power(dev);
        }
 }