Messages in this thread |  | | Subject | Re: [PATCH v4] HID: i2c-hid: Enable wakeup capability from Suspend-to-Idle | From | Hans de Goede <> | Date | Thu, 9 Jul 2020 12:05:29 +0200 |
| |
Hi,
On 7/9/20 9:57 AM, Kai-Heng Feng wrote: > Many laptops can be woken up from Suspend-to-Idle by touchpad. This is > also the default behavior on other OSes. > > However, if touchpad and touchscreen contact to each other when lid is > closed, wakeup events can be triggered inadventertly. > > So let's disable the wakeup by default, but enable the wakeup capability > so users can enable it at their own discretion. > > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Thank you, this version looks good to me:
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Regards,
Hans
> --- > v4: > - Enable the capability, but disable the wakeup default. > > v3: > - Use device_init_wakeup(). > - Wording change. > > v2: > - Fix compile error when ACPI is not enabled. > > drivers/hid/i2c-hid/i2c-hid-core.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c > index 294c84e136d7..c18ca6a6cb3d 100644 > --- a/drivers/hid/i2c-hid/i2c-hid-core.c > +++ b/drivers/hid/i2c-hid/i2c-hid-core.c > @@ -931,6 +931,14 @@ static void i2c_hid_acpi_fix_up_power(struct device *dev) > acpi_device_fix_up_power(adev); > } > > +static void i2c_hid_acpi_enable_wakeup(struct device *dev) > +{ > + if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) { > + device_set_wakeup_capable(dev, true); > + device_set_wakeup_enable(dev, false); > + } > +} > + > static const struct acpi_device_id i2c_hid_acpi_match[] = { > {"ACPI0C50", 0 }, > {"PNP0C50", 0 }, > @@ -945,6 +953,8 @@ static inline int i2c_hid_acpi_pdata(struct i2c_client *client, > } > > static inline void i2c_hid_acpi_fix_up_power(struct device *dev) {} > + > +static inline void i2c_hid_acpi_enable_wakeup(struct device *dev) {} > #endif > > #ifdef CONFIG_OF > @@ -1072,6 +1082,8 @@ static int i2c_hid_probe(struct i2c_client *client, > > i2c_hid_acpi_fix_up_power(&client->dev); > > + i2c_hid_acpi_enable_wakeup(&client->dev); > + > device_enable_async_suspend(&client->dev); > > /* Make sure there is something at this address */ >
|  |