OSDN Git Service

gpiolib: acpi: Add quirk to ignore EC wakeups on HP x2 10 CHT + AXP288 model
authorHans de Goede <hdegoede@redhat.com>
Mon, 2 Mar 2020 11:12:25 +0000 (12:12 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 24 Mar 2020 09:06:54 +0000 (10:06 +0100)
There are at least 3 models of the HP x2 10 models:

Bay Trail SoC + AXP288 PMIC
Cherry Trail SoC + AXP288 PMIC
Cherry Trail SoC + TI PMIC

Like on the other HP x2 10 models we need to ignore wakeup for ACPI GPIO
events on the external embedded-controller pin to avoid spurious wakeups
on the HP x2 10 CHT + AXP288 model too.

This commit adds an extra DMI based quirk for the HP x2 10 CHT + AXP288
model, ignoring wakeups for ACPI GPIO events on the EC interrupt pin
on this model. This fixes spurious wakeups from suspend on this model.

Fixes: aa23ca3d98f7 ("gpiolib: acpi: Add honor_wakeup module-option + quirk mechanism")
Reported-and-tested-by: Marc Lehmann <schmorp@schmorp.de>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20200302111225.6641-4-hdegoede@redhat.com
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib-acpi.c

index d1ef060..0017367 100644 (file)
@@ -1437,6 +1437,21 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] = {
                        .ignore_wake = "INT33FC:02@28",
                },
        },
+       {
+               /*
+                * HP X2 10 models with Cherry Trail SoC + AXP288 PMIC use an
+                * external embedded-controller connected via I2C + an ACPI GPIO
+                * event handler on INT33FF:01 pin 0, causing spurious wakeups.
+                */
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "HP"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"),
+                       DMI_MATCH(DMI_BOARD_NAME, "813E"),
+               },
+               .driver_data = &(struct acpi_gpiolib_dmi_quirk) {
+                       .ignore_wake = "INT33FF:01@0",
+               },
+       },
        {} /* Terminating entry */
 };