]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/acpi/device_pm.c
ACPI / PM: Clean up device wakeup enable/disable code
[mirror_ubuntu-artful-kernel.git] / drivers / acpi / device_pm.c
index fa7405286d716d3d226eae0aaae536f75577bf3f..f13c62c4b117806ff899081a97f3e6ca9ffa7735 100644 (file)
@@ -688,26 +688,23 @@ static int acpi_device_wakeup(struct acpi_device *adev, u32 target_state,
                acpi_status res;
                int error;
 
+               if (adev->wakeup.flags.enabled)
+                       return 0;
+
                error = acpi_enable_wakeup_device_power(adev, target_state);
                if (error)
                        return error;
 
-               if (adev->wakeup.flags.enabled)
-                       return 0;
-
                res = acpi_enable_gpe(wakeup->gpe_device, wakeup->gpe_number);
-               if (ACPI_SUCCESS(res)) {
-                       adev->wakeup.flags.enabled = 1;
-               } else {
+               if (ACPI_FAILURE(res)) {
                        acpi_disable_wakeup_device_power(adev);
                        return -EIO;
                }
-       } else {
-               if (adev->wakeup.flags.enabled) {
-                       acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number);
-                       adev->wakeup.flags.enabled = 0;
-               }
+               adev->wakeup.flags.enabled = 1;
+       } else if (adev->wakeup.flags.enabled) {
+               acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number);
                acpi_disable_wakeup_device_power(adev);
+               adev->wakeup.flags.enabled = 0;
        }
        return 0;
 }