From a84342f95cba2be19a9990f071fb30eb510c1e55 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Tue, 8 Feb 2011 23:41:13 +0100 Subject: [PATCH] --- yaml --- r: 241675 b: refs/heads/master c: c19f9a84ec807da57fd75bbd9a3f2b8269611f79 h: refs/heads/master i: 241673: 0918a7ca4aa3a7b61618fa3b6fd1ce3ab14d8d43 241671: 143899c7b517c00e8e1a2482dc8840bcab8da313 v: v3 --- [refs] | 2 +- trunk/drivers/acpi/button.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 97c2d52e6867..6b6aedb27c52 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5190726765b40774c069e187a958e10ccd970e65 +refs/heads/master: c19f9a84ec807da57fd75bbd9a3f2b8269611f79 diff --git a/trunk/drivers/acpi/button.c b/trunk/drivers/acpi/button.c index e643a0936dc4..12c28f4adb67 100644 --- a/trunk/drivers/acpi/button.c +++ b/trunk/drivers/acpi/button.c @@ -98,6 +98,7 @@ struct acpi_button { struct input_dev *input; char phys[32]; /* for input device */ unsigned long pushed; + bool wakeup_enabled; }; static const struct file_operations acpi_button_info_fops = { @@ -430,7 +431,10 @@ static int acpi_button_add(struct acpi_device *device) /* Button's GPE is run-wake GPE */ acpi_enable_gpe(device->wakeup.gpe_device, device->wakeup.gpe_number); - device_set_wakeup_enable(&device->dev, true); + if (!device_may_wakeup(&device->dev)) { + device_set_wakeup_enable(&device->dev, true); + button->wakeup_enabled = true; + } } 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) if (device->wakeup.flags.valid) { acpi_disable_gpe(device->wakeup.gpe_device, device->wakeup.gpe_number); - device_set_wakeup_enable(&device->dev, false); + if (button->wakeup_enabled) + device_set_wakeup_enable(&device->dev, false); } acpi_button_remove_fs(device);