Skip to content

Commit 4ac51da

Browse files
antheasij-intel
authored andcommitted
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>
1 parent 56d1b33 commit 4ac51da

1 file changed

Lines changed: 6 additions & 10 deletions

File tree

drivers/hid/hid-asus.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
9090
#define QUIRK_ROG_NKEY_KEYBOARD BIT(11)
9191
#define QUIRK_ROG_CLAYMORE_II_KEYBOARD BIT(12)
9292
#define QUIRK_ROG_ALLY_XPAD BIT(13)
93+
#define QUIRK_ROG_NKEY_ID1ID2_INIT BIT(14)
9394

9495
#define I2C_KEYBOARD_QUIRKS (QUIRK_FIX_NOTEBOOK_REPORT | \
9596
QUIRK_NO_INIT_REPORTS | \
@@ -652,14 +653,9 @@ static int asus_kbd_register_leds(struct hid_device *hdev)
652653
if (!(kbd_func & SUPPORT_KBD_BACKLIGHT))
653654
return -ENODEV;
654655

655-
if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
656-
ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1);
657-
if (ret < 0)
658-
return ret;
659-
660-
ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2);
661-
if (ret < 0)
662-
return ret;
656+
if (drvdata->quirks & QUIRK_ROG_NKEY_ID1ID2_INIT) {
657+
asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1);
658+
asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2);
663659
}
664660

665661
if (dmi_match(DMI_PRODUCT_FAMILY, "ProArt P16")) {
@@ -1376,10 +1372,10 @@ static const struct hid_device_id asus_devices[] = {
13761372
QUIRK_USE_KBD_BACKLIGHT },
13771373
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
13781374
USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD),
1379-
QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },
1375+
QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT },
13801376
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
13811377
USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2),
1382-
QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },
1378+
QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT },
13831379
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
13841380
USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR),
13851381
QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },

0 commit comments

Comments
 (0)