diff options
| -rw-r--r-- | drivers/acpi/button.c | 4 | ||||
| -rw-r--r-- | drivers/acpi/wakeup.c | 20 |
2 files changed, 9 insertions, 15 deletions
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index fd51c4ab4829..7d857dabdde4 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c | |||
| @@ -425,7 +425,7 @@ static int acpi_button_add(struct acpi_device *device) | |||
| 425 | /* Button's GPE is run-wake GPE */ | 425 | /* Button's GPE is run-wake GPE */ |
| 426 | acpi_enable_gpe(device->wakeup.gpe_device, | 426 | acpi_enable_gpe(device->wakeup.gpe_device, |
| 427 | device->wakeup.gpe_number, | 427 | device->wakeup.gpe_number, |
| 428 | ACPI_GPE_TYPE_WAKE_RUN); | 428 | ACPI_GPE_TYPE_RUNTIME); |
| 429 | device->wakeup.run_wake_count++; | 429 | device->wakeup.run_wake_count++; |
| 430 | device->wakeup.state.enabled = 1; | 430 | device->wakeup.state.enabled = 1; |
| 431 | } | 431 | } |
| @@ -449,7 +449,7 @@ static int acpi_button_remove(struct acpi_device *device, int type) | |||
| 449 | if (device->wakeup.flags.valid) { | 449 | if (device->wakeup.flags.valid) { |
| 450 | acpi_disable_gpe(device->wakeup.gpe_device, | 450 | acpi_disable_gpe(device->wakeup.gpe_device, |
| 451 | device->wakeup.gpe_number, | 451 | device->wakeup.gpe_number, |
| 452 | ACPI_GPE_TYPE_WAKE_RUN); | 452 | ACPI_GPE_TYPE_RUNTIME); |
| 453 | device->wakeup.run_wake_count--; | 453 | device->wakeup.run_wake_count--; |
| 454 | device->wakeup.state.enabled = 0; | 454 | device->wakeup.state.enabled = 0; |
| 455 | } | 455 | } |
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c index 4b9d339a6e28..388747a7ef4f 100644 --- a/drivers/acpi/wakeup.c +++ b/drivers/acpi/wakeup.c | |||
| @@ -64,16 +64,13 @@ void acpi_enable_wakeup_device(u8 sleep_state) | |||
| 64 | struct acpi_device *dev = | 64 | struct acpi_device *dev = |
| 65 | container_of(node, struct acpi_device, wakeup_list); | 65 | container_of(node, struct acpi_device, wakeup_list); |
| 66 | 66 | ||
| 67 | if (!dev->wakeup.flags.valid) | 67 | if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled |
| 68 | continue; | ||
| 69 | |||
| 70 | if ((!dev->wakeup.state.enabled && !dev->wakeup.prepare_count) | ||
| 71 | || sleep_state > (u32) dev->wakeup.sleep_state) | 68 | || sleep_state > (u32) dev->wakeup.sleep_state) |
| 72 | continue; | 69 | continue; |
| 73 | 70 | ||
| 74 | /* The wake-up power should have been enabled already. */ | 71 | /* The wake-up power should have been enabled already. */ |
| 75 | acpi_set_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, | 72 | acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, |
| 76 | ACPI_GPE_ENABLE); | 73 | ACPI_GPE_TYPE_WAKE); |
| 77 | } | 74 | } |
| 78 | } | 75 | } |
| 79 | 76 | ||
| @@ -96,6 +93,8 @@ void acpi_disable_wakeup_device(u8 sleep_state) | |||
| 96 | || (sleep_state > (u32) dev->wakeup.sleep_state)) | 93 | || (sleep_state > (u32) dev->wakeup.sleep_state)) |
| 97 | continue; | 94 | continue; |
| 98 | 95 | ||
| 96 | acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, | ||
| 97 | ACPI_GPE_TYPE_WAKE); | ||
| 99 | acpi_disable_wakeup_device_power(dev); | 98 | acpi_disable_wakeup_device_power(dev); |
| 100 | } | 99 | } |
| 101 | } | 100 | } |
| @@ -109,13 +108,8 @@ int __init acpi_wakeup_device_init(void) | |||
| 109 | struct acpi_device *dev = container_of(node, | 108 | struct acpi_device *dev = container_of(node, |
| 110 | struct acpi_device, | 109 | struct acpi_device, |
| 111 | wakeup_list); | 110 | wakeup_list); |
| 112 | /* In case user doesn't load button driver */ | 111 | if (dev->wakeup.flags.always_enabled) |
| 113 | if (!dev->wakeup.flags.always_enabled || | 112 | dev->wakeup.state.enabled = 1; |
| 114 | dev->wakeup.state.enabled) | ||
| 115 | continue; | ||
| 116 | acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, | ||
| 117 | ACPI_GPE_TYPE_WAKE); | ||
| 118 | dev->wakeup.state.enabled = 1; | ||
| 119 | } | 113 | } |
| 120 | mutex_unlock(&acpi_device_lock); | 114 | mutex_unlock(&acpi_device_lock); |
| 121 | return 0; | 115 | return 0; |
