diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/acpi/button.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index e643a0936dc4..12c28f4adb67 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c | |||
| @@ -98,6 +98,7 @@ struct acpi_button { | |||
| 98 | struct input_dev *input; | 98 | struct input_dev *input; |
| 99 | char phys[32]; /* for input device */ | 99 | char phys[32]; /* for input device */ |
| 100 | unsigned long pushed; | 100 | unsigned long pushed; |
| 101 | bool wakeup_enabled; | ||
| 101 | }; | 102 | }; |
| 102 | 103 | ||
| 103 | static const struct file_operations acpi_button_info_fops = { | 104 | static const struct file_operations acpi_button_info_fops = { |
| @@ -430,7 +431,10 @@ static int acpi_button_add(struct acpi_device *device) | |||
| 430 | /* Button's GPE is run-wake GPE */ | 431 | /* Button's GPE is run-wake GPE */ |
| 431 | acpi_enable_gpe(device->wakeup.gpe_device, | 432 | acpi_enable_gpe(device->wakeup.gpe_device, |
| 432 | device->wakeup.gpe_number); | 433 | device->wakeup.gpe_number); |
| 433 | device_set_wakeup_enable(&device->dev, true); | 434 | if (!device_may_wakeup(&device->dev)) { |
| 435 | device_set_wakeup_enable(&device->dev, true); | ||
| 436 | button->wakeup_enabled = true; | ||
| 437 | } | ||
| 434 | } | 438 | } |
| 435 | 439 | ||
| 436 | printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device)); | 440 | printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device)); |
| @@ -452,7 +456,8 @@ static int acpi_button_remove(struct acpi_device *device, int type) | |||
| 452 | if (device->wakeup.flags.valid) { | 456 | if (device->wakeup.flags.valid) { |
| 453 | acpi_disable_gpe(device->wakeup.gpe_device, | 457 | acpi_disable_gpe(device->wakeup.gpe_device, |
| 454 | device->wakeup.gpe_number); | 458 | device->wakeup.gpe_number); |
| 455 | device_set_wakeup_enable(&device->dev, false); | 459 | if (button->wakeup_enabled) |
| 460 | device_set_wakeup_enable(&device->dev, false); | ||
| 456 | } | 461 | } |
| 457 | 462 | ||
| 458 | acpi_button_remove_fs(device); | 463 | acpi_button_remove_fs(device); |
