diff options
Diffstat (limited to 'drivers/acpi/sleep/wakeup.c')
| -rw-r--r-- | drivers/acpi/sleep/wakeup.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/acpi/sleep/wakeup.c b/drivers/acpi/sleep/wakeup.c index 7422a2213944..38655eb132dc 100644 --- a/drivers/acpi/sleep/wakeup.c +++ b/drivers/acpi/sleep/wakeup.c | |||
| @@ -66,13 +66,15 @@ void acpi_enable_wakeup_device(u8 sleep_state) | |||
| 66 | list_for_each_safe(node, next, &acpi_wakeup_device_list) { | 66 | list_for_each_safe(node, next, &acpi_wakeup_device_list) { |
| 67 | struct acpi_device *dev = | 67 | struct acpi_device *dev = |
| 68 | container_of(node, struct acpi_device, wakeup_list); | 68 | container_of(node, struct acpi_device, wakeup_list); |
| 69 | |||
| 69 | if (!dev->wakeup.flags.valid) | 70 | if (!dev->wakeup.flags.valid) |
| 70 | continue; | 71 | continue; |
| 72 | |||
| 71 | /* If users want to disable run-wake GPE, | 73 | /* If users want to disable run-wake GPE, |
| 72 | * we only disable it for wake and leave it for runtime | 74 | * we only disable it for wake and leave it for runtime |
| 73 | */ | 75 | */ |
| 74 | if (!dev->wakeup.state.enabled || | 76 | if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) |
| 75 | sleep_state > (u32) dev->wakeup.sleep_state) { | 77 | || sleep_state > (u32) dev->wakeup.sleep_state) { |
| 76 | if (dev->wakeup.flags.run_wake) { | 78 | if (dev->wakeup.flags.run_wake) { |
| 77 | spin_unlock(&acpi_device_lock); | 79 | spin_unlock(&acpi_device_lock); |
| 78 | /* set_gpe_type will disable GPE, leave it like that */ | 80 | /* set_gpe_type will disable GPE, leave it like that */ |
| @@ -110,8 +112,9 @@ void acpi_disable_wakeup_device(u8 sleep_state) | |||
| 110 | 112 | ||
| 111 | if (!dev->wakeup.flags.valid) | 113 | if (!dev->wakeup.flags.valid) |
| 112 | continue; | 114 | continue; |
| 113 | if (!dev->wakeup.state.enabled || | 115 | |
| 114 | sleep_state > (u32) dev->wakeup.sleep_state) { | 116 | if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) |
| 117 | || sleep_state > (u32) dev->wakeup.sleep_state) { | ||
| 115 | if (dev->wakeup.flags.run_wake) { | 118 | if (dev->wakeup.flags.run_wake) { |
| 116 | spin_unlock(&acpi_device_lock); | 119 | spin_unlock(&acpi_device_lock); |
| 117 | acpi_set_gpe_type(dev->wakeup.gpe_device, | 120 | acpi_set_gpe_type(dev->wakeup.gpe_device, |
