Skip to content

Commit b988685

Browse files
superm1rafaeljw
authored andcommitted
ACPI: EC: Set ec_no_wakeup for Lenovo Go S
When AC adapter is unplugged or plugged in EC wakes from HW sleep but APU doesn't enter back into HW sleep. The reason this happens is that, when the APU exits HW sleep, the power rails controlled by the EC will power up the TCON. The TCON has a GPIO that will be toggled at this time. The GPIO is not marked as a wakeup source, but the GPIO controller still has an unserviced interrupt. Unserviced interrupts will block entering HW sleep again. Clearing the GPIO doesn't help as the TCON continues to assert it until it's been initialized by i2c-hid. Fixing this would require TCON F/W changes and it's already broken in the wild on production hardware. To avoid triggering this issue add a quirk to avoid letting EC wake up system at all. The power button still works properly on this system. Reported-by: Antheas Kapenekakis <lkml@antheas.dev> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3929 Link: bazzite-org@95b93b2 Co-developed-by: Antheas Kapenekakis <lkml@antheas.dev> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Link: https://patch.msgid.link/20250401133858.1892077-1-superm1@kernel.org [ rjw: Changelog edits ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 0af2f6b commit b988685

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

drivers/acpi/ec.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2301,6 +2301,34 @@ static const struct dmi_system_id acpi_ec_no_wakeup[] = {
23012301
DMI_MATCH(DMI_PRODUCT_FAMILY, "103C_5336AN HP ZHAN 66 Pro"),
23022302
},
23032303
},
2304+
/*
2305+
* Lenovo Legion Go S; touchscreen blocks HW sleep when woken up from EC
2306+
* https://gitlab.freedesktop.org/drm/amd/-/issues/3929
2307+
*/
2308+
{
2309+
.matches = {
2310+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2311+
DMI_MATCH(DMI_PRODUCT_NAME, "83L3"),
2312+
}
2313+
},
2314+
{
2315+
.matches = {
2316+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2317+
DMI_MATCH(DMI_PRODUCT_NAME, "83N6"),
2318+
}
2319+
},
2320+
{
2321+
.matches = {
2322+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2323+
DMI_MATCH(DMI_PRODUCT_NAME, "83Q2"),
2324+
}
2325+
},
2326+
{
2327+
.matches = {
2328+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2329+
DMI_MATCH(DMI_PRODUCT_NAME, "83Q3"),
2330+
}
2331+
},
23042332
{ },
23052333
};
23062334

0 commit comments

Comments
 (0)