Messages in this thread Patch in this message | | | Date | Fri, 5 Aug 2022 11:59:03 -0500 | Subject | Re: [PATCH] i2c: ACPI: Do not check ACPI_FADT_LOW_POWER_S0 | From | "Limonciello, Mario" <> |
| |
On 8/5/2022 11:51, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > The ACPI_FADT_LOW_POWER_S0 flag merely means that it is better to > use low-power S0 idle on the given platform than S3 (provided that > the latter is supported) and it doesn't preclude using either of > them (which of them will be used depends on the choices made by user > space). > > Because of that, ACPI_FADT_LOW_POWER_S0 is generally not sufficient > for making decisions in device drivers and so i2c_hid_acpi_probe() > should not use it. > > Moreover, Linux always supports suspend-to-idle, so if a given > device can wake up the system from suspend-to-idle, then it can be > marked as wakeup capable unconditionally, so make that happen in > i2c_hid_acpi_probe(). > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Raul +Hans +KH
Raul had a patch that was actually going to just tear out this code entirely: https://lkml.kernel.org/lkml/20211220163823.1.Ie20ca47a26d3ea68124d8197b67bb1344c67f650@changeid/
As part of that patch series discussion another suggestion had transpired (https://patchwork.kernel.org/project/linux-input/patch/20211220163823.2.Id022caf53d01112188308520915798f08a33cd3e@changeid/#24681016):
``` if ((acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) && !adev->flags.power_manageable) { device_set_wakeup_capable(dev, true); device_set_wakeup_enable(dev, false); } ```
If this is being changed, maybe consider that suggestion to check `adev->flags.power_manageable`.
> --- > drivers/hid/i2c-hid/i2c-hid-acpi.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > Index: linux-pm/drivers/hid/i2c-hid/i2c-hid-acpi.c > =================================================================== > --- linux-pm.orig/drivers/hid/i2c-hid/i2c-hid-acpi.c > +++ linux-pm/drivers/hid/i2c-hid/i2c-hid-acpi.c > @@ -105,10 +105,8 @@ static int i2c_hid_acpi_probe(struct i2c > > acpi_device_fix_up_power(adev); > > - if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) { > - device_set_wakeup_capable(dev, true); > - device_set_wakeup_enable(dev, false); > - } > + device_set_wakeup_capable(dev, true); > + device_set_wakeup_enable(dev, false); > > return i2c_hid_core_probe(client, &ihid_acpi->ops, > hid_descriptor_address, 0); > > >
| |