Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: i2c-hid: Disable runtime PM on Goodix touchpad

A Goodix touchpad doesn't work. Touching the touchpad can trigger IRQ
but there's no input event from HID subsystem.

Turns out it reports some invalid data:
[ 22.136630] i2c_hid i2c-DELL091F:00: input: 0b 00 01 00 00 00 00 00 00 00 00

After some trial and error, it's another device that doesn't work well
with ON/SLEEP commands. Disable runtime PM to fix the issue.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Kai-Heng Feng and committed by
Jiri Kosina
77ae0d8e ee46967f

+5
+3
drivers/hid/hid-ids.h
··· 461 461 #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_010A 0x010a 462 462 #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100 463 463 464 + #define I2C_VENDOR_ID_GOODIX 0x27c6 465 + #define I2C_DEVICE_ID_GOODIX_01F0 0x01f0 466 + 464 467 #define USB_VENDOR_ID_GOODTOUCH 0x1aad 465 468 #define USB_DEVICE_ID_GOODTOUCH_000f 0x000f 466 469
+2
drivers/hid/i2c-hid/i2c-hid-core.c
··· 179 179 I2C_HID_QUIRK_DELAY_AFTER_SLEEP }, 180 180 { USB_VENDOR_ID_LG, I2C_DEVICE_ID_LG_8001, 181 181 I2C_HID_QUIRK_NO_RUNTIME_PM }, 182 + { I2C_VENDOR_ID_GOODIX, I2C_DEVICE_ID_GOODIX_01F0, 183 + I2C_HID_QUIRK_NO_RUNTIME_PM }, 182 184 { 0, 0 } 183 185 }; 184 186