ACPI / Button: Fix enabling button GPEs twice
Button GPEs have been enabled in the acpi_wake_device_init() during boot and the button driver enables them for the second time. Consequently, it is necessary to do # echo disable > /sys/firmware/acpi/interrupts/gpeXXX twice in a row to disable those GPEs via sysfs. This patch is to remove the GPE enabling code from the button driver to avoid the problem. Signed-off-by: Lan Tianyu <tianyu.lan@intel.com> [rjw: Changelog] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
319e2e3f63
commit
8eaa29f92a
@ -101,7 +101,6 @@ struct acpi_button {
|
|||||||
struct input_dev *input;
|
struct input_dev *input;
|
||||||
char phys[32]; /* for input device */
|
char phys[32]; /* for input device */
|
||||||
unsigned long pushed;
|
unsigned long pushed;
|
||||||
bool wakeup_enabled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static BLOCKING_NOTIFIER_HEAD(acpi_lid_notifier);
|
static BLOCKING_NOTIFIER_HEAD(acpi_lid_notifier);
|
||||||
@ -407,16 +406,6 @@ static int acpi_button_add(struct acpi_device *device)
|
|||||||
lid_device = device;
|
lid_device = device;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (device->wakeup.flags.valid) {
|
|
||||||
/* Button's GPE is run-wake GPE */
|
|
||||||
acpi_enable_gpe(device->wakeup.gpe_device,
|
|
||||||
device->wakeup.gpe_number);
|
|
||||||
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));
|
printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -433,13 +422,6 @@ static int acpi_button_remove(struct acpi_device *device)
|
|||||||
{
|
{
|
||||||
struct acpi_button *button = acpi_driver_data(device);
|
struct acpi_button *button = acpi_driver_data(device);
|
||||||
|
|
||||||
if (device->wakeup.flags.valid) {
|
|
||||||
acpi_disable_gpe(device->wakeup.gpe_device,
|
|
||||||
device->wakeup.gpe_number);
|
|
||||||
if (button->wakeup_enabled)
|
|
||||||
device_set_wakeup_enable(&device->dev, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
acpi_button_remove_fs(device);
|
acpi_button_remove_fs(device);
|
||||||
input_unregister_device(button->input);
|
input_unregister_device(button->input);
|
||||||
kfree(button);
|
kfree(button);
|
||||||
|
Loading…
Reference in New Issue
Block a user