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

Configure Feed

Select the types of activity you want to include in your feed.

HID: asus: initialize additional endpoints only for certain devices

Currently, ID1/ID2 initializations are performed for all NKEY devices.
However, ID1 initializations are only required for RGB control and are
only supported for RGB capable devices. ID2 initializations are only
required for initializing the Anime display endpoint which is only
supported on devices with an Anime display. Both of these
initializations are for functionality that is not present on this driver
and are performed for devices which might not support them.

At the same time, there are older NKEY devices that have only been
tested with these initializations in the kernel and it is not possible
to recheck them. There is a possibility that especially with the ID1
initialization, certain laptop models might have their shortcuts stop
working (currently unproven).

To avoid sending unnecessary commands, change to only initialize ID1/ID2
for those NKEY devices suspected to be problematic without them by
introducing a quirk for them and replacing the NKEY quirk in the block
that performs the inits with that. Therefore, new devices that do not
need (and some do not support) these initializations will not have
them performed.

In addition, as these initializations might not be supported by the
affected devices, change the function to not bail if they fail.

Acked-by: Benjamin Tissoires <bentiss@kernel.org>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Reviewed-by: Denis Benato <benato.denis96@gmail.com>
Link: https://patch.msgid.link/20260122075044.5070-3-lkml@antheas.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

authored by

Antheas Kapenekakis and committed by
Ilpo Järvinen
4ac51daa 56d1b33e

+6 -10
+6 -10
drivers/hid/hid-asus.c
··· 90 90 #define QUIRK_ROG_NKEY_KEYBOARD BIT(11) 91 91 #define QUIRK_ROG_CLAYMORE_II_KEYBOARD BIT(12) 92 92 #define QUIRK_ROG_ALLY_XPAD BIT(13) 93 + #define QUIRK_ROG_NKEY_ID1ID2_INIT BIT(14) 93 94 94 95 #define I2C_KEYBOARD_QUIRKS (QUIRK_FIX_NOTEBOOK_REPORT | \ 95 96 QUIRK_NO_INIT_REPORTS | \ ··· 653 652 if (!(kbd_func & SUPPORT_KBD_BACKLIGHT)) 654 653 return -ENODEV; 655 654 656 - if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { 657 - ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1); 658 - if (ret < 0) 659 - return ret; 660 - 661 - ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2); 662 - if (ret < 0) 663 - return ret; 655 + if (drvdata->quirks & QUIRK_ROG_NKEY_ID1ID2_INIT) { 656 + asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1); 657 + asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2); 664 658 } 665 659 666 660 if (dmi_match(DMI_PRODUCT_FAMILY, "ProArt P16")) { ··· 1372 1376 QUIRK_USE_KBD_BACKLIGHT }, 1373 1377 { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, 1374 1378 USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD), 1375 - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, 1379 + QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT }, 1376 1380 { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, 1377 1381 USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2), 1378 - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, 1382 + QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT }, 1379 1383 { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, 1380 1384 USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR), 1381 1385 QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },