]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: Ignore battery for all ELAN I2C-HID devices
authorHans de Goede <hdegoede@redhat.com>
Mon, 5 Aug 2024 14:51:47 +0000 (16:51 +0200)
committerJiri Kosina <jkosina@suse.com>
Tue, 6 Aug 2024 06:42:53 +0000 (08:42 +0200)
Before this change there were 16 vid:pid based quirks to ignore the battery
reported by Elan I2C-HID touchscreens on various Asus and HP laptops.

And a report has been received that the 04F3:2A00 I2C touchscreen on
the HP ProBook x360 11 G5 EE/86CF also reports a non present battery.

Since I2C-HID devices are always builtin to laptops they are not battery
owered so it should be safe to just ignore the battery on all Elan I2C-HID
devices, rather then adding a 17th quirk for the 04F3:2A00 touchscreen.

As reported in the changelog of commit a3a5a37efba1 ("HID: Ignore battery
for ELAN touchscreens 2F2C and 4116"), which added 2 new Elan touchscreen
quirks about a month ago, the HID reported battery seems to be related
to a stylus being used. But even when a stylus is in use it does not
properly report the charge of the stylus battery, instead the reported
battery charge jumps from 0% to 1%. So it is best to just ignore the
HID battery.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2302776
Cc: Louis Dalibard <ontake@ontake.dev>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-ids.h
drivers/hid/hid-input.c

index 72d56ee7ce1b98c6e5a23b67eb83cd9818db8be3..72936a523c5432b89221db4f75b47184124460ca 100644 (file)
 #define USB_DEVICE_ID_TOSHIBA_CLICK_L9W        0x0401
 #define USB_DEVICE_ID_HP_X2            0x074d
 #define USB_DEVICE_ID_HP_X2_10_COVER   0x0755
-#define I2C_DEVICE_ID_HP_ENVY_X360_15  0x2d05
-#define I2C_DEVICE_ID_HP_ENVY_X360_15T_DR100   0x29CF
-#define I2C_DEVICE_ID_HP_ENVY_X360_EU0009NV    0x2CF9
-#define I2C_DEVICE_ID_HP_SPECTRE_X360_15       0x2817
-#define I2C_DEVICE_ID_HP_SPECTRE_X360_13_AW0020NG  0x29DF
-#define I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN 0x2BC8
-#define I2C_DEVICE_ID_ASUS_GV301RA_TOUCHSCREEN 0x2C82
-#define I2C_DEVICE_ID_ASUS_UX3402_TOUCHSCREEN 0x2F2C
-#define I2C_DEVICE_ID_ASUS_UX6404_TOUCHSCREEN 0x4116
 #define USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN 0x2544
 #define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN   0x2706
-#define I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN   0x261A
-#define I2C_DEVICE_ID_SURFACE_GO2_TOUCHSCREEN  0x2A1C
-#define I2C_DEVICE_ID_LENOVO_YOGA_C630_TOUCHSCREEN     0x279F
-#define I2C_DEVICE_ID_HP_SPECTRE_X360_13T_AW100        0x29F5
-#define I2C_DEVICE_ID_HP_SPECTRE_X360_14T_EA100_V1     0x2BED
-#define I2C_DEVICE_ID_HP_SPECTRE_X360_14T_EA100_V2     0x2BEE
-#define I2C_DEVICE_ID_HP_ENVY_X360_15_EU0556NG         0x2D02
 #define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM        0x2F81
 
 #define USB_VENDOR_ID_ELECOM           0x056e
index c9094a4f281e90f514978d1b6190e88648f0583c..fda9dce3da99808e04ce66dd7beec6731173e75f 100644 (file)
@@ -373,14 +373,6 @@ static const struct hid_device_id hid_battery_quirks[] = {
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH,
                USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD),
          HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_GV301RA_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_UX3402_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_UX6404_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
        { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN),
          HID_BATTERY_QUIRK_IGNORE },
        { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN),
@@ -391,32 +383,13 @@ static const struct hid_device_id hid_battery_quirks[] = {
          HID_BATTERY_QUIRK_AVOID_QUERY },
        { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO_PRO_SW),
          HID_BATTERY_QUIRK_AVOID_QUERY },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_ENVY_X360_15),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_ENVY_X360_15T_DR100),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_ENVY_X360_EU0009NV),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_15),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_13_AW0020NG),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_GO2_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_LENOVO_YOGA_C630_TOUCHSCREEN),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_13T_AW100),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_14T_EA100_V1),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_14T_EA100_V2),
-         HID_BATTERY_QUIRK_IGNORE },
-       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_ENVY_X360_15_EU0556NG),
-         HID_BATTERY_QUIRK_IGNORE },
        { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM),
          HID_BATTERY_QUIRK_AVOID_QUERY },
+       /*
+        * Elan I2C-HID touchscreens seem to all report a non present battery,
+        * set HID_BATTERY_QUIRK_IGNORE for all Elan I2C-HID devices.
+        */
+       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_BATTERY_QUIRK_IGNORE },
        {}
 };