diff options
Diffstat (limited to 'drivers/acpi/wakeup.c')
| -rw-r--r-- | drivers/acpi/wakeup.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c index dc6d1d9112fb..f62a50c3ed34 100644 --- a/drivers/acpi/wakeup.c +++ b/drivers/acpi/wakeup.c | |||
| @@ -36,7 +36,8 @@ void acpi_enable_wakeup_devices(u8 sleep_state) | |||
| 36 | struct acpi_device *dev = | 36 | struct acpi_device *dev = |
| 37 | container_of(node, struct acpi_device, wakeup_list); | 37 | container_of(node, struct acpi_device, wakeup_list); |
| 38 | 38 | ||
| 39 | if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled | 39 | if (!dev->wakeup.flags.valid |
| 40 | || !(dev->wakeup.state.enabled || dev->wakeup.prepare_count) | ||
| 40 | || sleep_state > (u32) dev->wakeup.sleep_state) | 41 | || sleep_state > (u32) dev->wakeup.sleep_state) |
| 41 | continue; | 42 | continue; |
| 42 | 43 | ||
| @@ -44,8 +45,8 @@ void acpi_enable_wakeup_devices(u8 sleep_state) | |||
| 44 | acpi_enable_wakeup_device_power(dev, sleep_state); | 45 | acpi_enable_wakeup_device_power(dev, sleep_state); |
| 45 | 46 | ||
| 46 | /* The wake-up power should have been enabled already. */ | 47 | /* The wake-up power should have been enabled already. */ |
| 47 | acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, | 48 | acpi_gpe_wakeup(dev->wakeup.gpe_device, dev->wakeup.gpe_number, |
| 48 | ACPI_GPE_TYPE_WAKE); | 49 | ACPI_GPE_ENABLE); |
| 49 | } | 50 | } |
| 50 | } | 51 | } |
| 51 | 52 | ||
| @@ -61,13 +62,16 @@ void acpi_disable_wakeup_devices(u8 sleep_state) | |||
| 61 | struct acpi_device *dev = | 62 | struct acpi_device *dev = |
| 62 | container_of(node, struct acpi_device, wakeup_list); | 63 | container_of(node, struct acpi_device, wakeup_list); |
| 63 | 64 | ||
| 64 | if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled | 65 | if (!dev->wakeup.flags.valid |
| 66 | || !(dev->wakeup.state.enabled || dev->wakeup.prepare_count) | ||
| 65 | || (sleep_state > (u32) dev->wakeup.sleep_state)) | 67 | || (sleep_state > (u32) dev->wakeup.sleep_state)) |
| 66 | continue; | 68 | continue; |
| 67 | 69 | ||
| 68 | acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, | 70 | acpi_gpe_wakeup(dev->wakeup.gpe_device, dev->wakeup.gpe_number, |
| 69 | ACPI_GPE_TYPE_WAKE); | 71 | ACPI_GPE_DISABLE); |
| 70 | acpi_disable_wakeup_device_power(dev); | 72 | |
| 73 | if (dev->wakeup.state.enabled) | ||
| 74 | acpi_disable_wakeup_device_power(dev); | ||
| 71 | } | 75 | } |
| 72 | } | 76 | } |
| 73 | 77 | ||
