lkml.org 
[lkml]   [2011]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] ACPI / Button: Avoid disabling wakeup unnecessarily on remove
    Date
    From: Rafael J. Wysocki <rjw@sisk.pl>

    If a button device had already been enabled to wake up the system
    from sleep states before the button driver saw it, the driver
    shouldn't disable the device's wakeup capability when being detached
    from the device.

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    drivers/acpi/button.c | 9 +++++++--
    1 file changed, 7 insertions(+), 2 deletions(-)

    Index: linux-2.6/drivers/acpi/button.c
    ===================================================================
    --- linux-2.6.orig/drivers/acpi/button.c
    +++ linux-2.6/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_d
    /* 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 acp
    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);


    \
     
     \ /
      Last update: 2011-02-06 14:25    [W:0.029 / U:0.004 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site