]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: asus: simplify RGB init sequence
authorAntheas Kapenekakis <lkml@antheas.dev>
Thu, 22 Jan 2026 07:50:34 +0000 (08:50 +0100)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 28 Jan 2026 12:02:17 +0000 (14:02 +0200)
Currently, RGB initialization forks depending on whether a device is
NKEY. However, in reality both initialization forks are the same, other
than the NKEY initialization initializing the LED_REPORT_ID1,
LED_REPORT_ID2 endpoints, and the non-NKEY initialization having a
functionality check which is skipped for the NKEY path.

Therefore, merge the if blocks, gate the ID1/ID2 initializations
behind the NKEY quirk instead, and introduce the functionality check
for NKEY devices (it is supported by them).

There should be no functional change with this patch.

Acked-by: Benjamin Tissoires <bentiss@kernel.org>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Link: https://patch.msgid.link/20260122075044.5070-2-lkml@antheas.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/hid/hid-asus.c

index 472bca54642b908713a2fae1a733914a492303fe..323e6302bac5be1f1674c71173f54d929d860bd8 100644 (file)
@@ -639,13 +639,20 @@ static int asus_kbd_register_leds(struct hid_device *hdev)
        unsigned char kbd_func;
        int ret;
 
-       if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
-               /* Initialize keyboard */
-               ret = asus_kbd_init(hdev, FEATURE_KBD_REPORT_ID);
-               if (ret < 0)
-                       return ret;
+       ret = asus_kbd_init(hdev, FEATURE_KBD_REPORT_ID);
+       if (ret < 0)
+               return ret;
 
-               /* The LED endpoint is initialised in two HID */
+       /* Get keyboard functions */
+       ret = asus_kbd_get_functions(hdev, &kbd_func, FEATURE_KBD_REPORT_ID);
+       if (ret < 0)
+               return ret;
+
+       /* Check for backlight support */
+       if (!(kbd_func & SUPPORT_KBD_BACKLIGHT))
+               return -ENODEV;
+
+       if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
                ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1);
                if (ret < 0)
                        return ret;
@@ -653,34 +660,19 @@ static int asus_kbd_register_leds(struct hid_device *hdev)
                ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2);
                if (ret < 0)
                        return ret;
+       }
 
-               if (dmi_match(DMI_PRODUCT_FAMILY, "ProArt P16")) {
-                       ret = asus_kbd_disable_oobe(hdev);
-                       if (ret < 0)
-                               return ret;
-               }
-
-               if (drvdata->quirks & QUIRK_ROG_ALLY_XPAD) {
-                       intf = to_usb_interface(hdev->dev.parent);
-                       udev = interface_to_usbdev(intf);
-                       validate_mcu_fw_version(hdev,
-                               le16_to_cpu(udev->descriptor.idProduct));
-               }
-
-       } else {
-               /* Initialize keyboard */
-               ret = asus_kbd_init(hdev, FEATURE_KBD_REPORT_ID);
-               if (ret < 0)
-                       return ret;
-
-               /* Get keyboard functions */
-               ret = asus_kbd_get_functions(hdev, &kbd_func, FEATURE_KBD_REPORT_ID);
+       if (dmi_match(DMI_PRODUCT_FAMILY, "ProArt P16")) {
+               ret = asus_kbd_disable_oobe(hdev);
                if (ret < 0)
                        return ret;
+       }
 
-               /* Check for backlight support */
-               if (!(kbd_func & SUPPORT_KBD_BACKLIGHT))
-                       return -ENODEV;
+       if (drvdata->quirks & QUIRK_ROG_ALLY_XPAD) {
+               intf = to_usb_interface(hdev->dev.parent);
+               udev = interface_to_usbdev(intf);
+               validate_mcu_fw_version(hdev,
+                       le16_to_cpu(udev->descriptor.idProduct));
        }
 
        drvdata->kbd_backlight = devm_kzalloc(&hdev->dev,