]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
HID: i2c-hid: Resolve touchpad issues on Dell systems during S4
authorMario Limonciello (AMD) <superm1@kernel.org>
Tue, 9 Sep 2025 11:00:06 +0000 (06:00 -0500)
committerBenjamin Tissoires <bentiss@kernel.org>
Tue, 16 Sep 2025 08:24:46 +0000 (10:24 +0200)
commit7d62beb102d6fa9a4e5e874be7fbf47a62fcc4f6
treebd2e0ffe392ba3fac1a54b12e3fde5044d36474a
parent02d6eeedbc36d4b309d5518778071a749ef79c4e
HID: i2c-hid: Resolve touchpad issues on Dell systems during S4

Dell systems utilize an EC-based touchpad emulation when the ACPI
touchpad _DSM is not invoked. This emulation acts as a secondary
master on the I2C bus, designed for scenarios where the I2C touchpad
driver is absent, such as in BIOS menus. Typically, loading the
i2c-hid module triggers the _DSM at initialization, disabling the
EC-based emulation.

However, if the i2c-hid module is missing from the boot kernel
used for hibernation snapshot restoration, the _DSM remains
uncalled, resulting in dual masters on the I2C bus and
subsequent arbitration errors. This issue arises when i2c-hid
resides in the rootfs instead of the kernel or initramfs.

To address this, switch from using the SYSTEM_SLEEP_PM_OPS()
macro to dedicated callbacks, introducing a specific
callback for restoring the S4 image. This callback ensures
the _DSM is invoked.

Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/i2c-hid/i2c-hid-acpi.c
drivers/hid/i2c-hid/i2c-hid-core.c
drivers/hid/i2c-hid/i2c-hid.h