Re: [PATCH v10 00/11] HID: asus: Fix ASUS ROG Laptop's Keyboard backlight handling

Ilpo Järvinen
2025-11-26T15:31:51Z

[-- Attachment #1: Type: text/plain, Size: 13042 bytes --]

On Wed, 26 Nov 2025, Antheas Kapenekakis wrote:

> On Wed, 26 Nov 2025 at 16:28, Antheas Kapenekakis <lkml@antheas.dev> wrote:
> >
> > On Wed, 26 Nov 2025 at 16:24, Ilpo Järvinen
> > <ilpo.jarvinen@linux.intel.com> wrote:
> > >
> > > On Wed, 26 Nov 2025, Antheas Kapenekakis wrote:
> > >
> > > > On Sat, 22 Nov 2025 at 12:01, Antheas Kapenekakis <lkml@antheas.dev> wrote:
> > > > >
> > > > > This is a two part series which does the following:
> > > > > - Clean-up init sequence
> > > > > - Unify backlight handling to happen under asus-wmi so that all Aura
> > > > > devices have synced brightness controls and the backlight button works
> > > > > properly when it is on a USB laptop keyboard instead of one w/ WMI.
> > > > >
> > > > > For more context, see cover letter of V1. Since V5, I removed some patches
> > > > > to make this easier to merge.
> > > >
> > > > Slight bump on this. It addresses both of the remarks Denis made in
> > > > the previous version.
> > > >
> > > > I begrudgingly argued a bit for those because I did not want to resend
> > > > the series and they were not functional changes, so sorry about that.
> > > > But they are fixed in this version incl. with the conflict with the
> > > > armoury patchset. Denis, you omitted a rby on "platform/x86: asus-wmi:
> > > > Add support for multiple kbd led handlers" even though I addressed
> > > > your comment, so you may want to add that.
> > >
> > > FYI, there's no direct relation that mandates a person to give a rev-by
> > > even if all his/her comments were addressed.
> >
> > True, this is just a reminder because I did not hear from him and
> > since he added a rev-by on the kfree patch. There's no obligation from
> > my side.
> >
> > > But generally yes, it would be useful to hear whether Denis is fine with
> > > v10, especially those patches that had contention earlier but you've
> > > modified post-v8.
> > >
> > > > As for "HID: asus: early return for ROG devices" changing the name of
> > > > the devices of this driver, I will veto backporting it if it happens,
> > > > so inputplumber will have the two full months to remove the name
> > > > match. This is not a breaking change in the sense that software cannot
> > > > be made to work on both previous and latter versions and there is no
> > > > other software to my knowledge relying on name matches for Asus
> > > > keyboards.
> > >
> > > Did Hans give some opinion about this rename earlier, at least I don't
> > > remember nor could find from lore archives?
> >
> > Hans jumped in on the ayaneo controller patch. I don't think I saw
> > activity on this series
>
> Hans had some feedback around half a year ago for the latter part of
> this series that binds the devices together

Yes but I was interested on specifically about this userspace visible
change. He has been around much much longer than me so his insight on
userspace visible changes is way more valuable than mine.

--
i.

>
> > Antheas
> >
> > > --
> > > i.
> > >
> > > > Moreover, an early exit is needed to prevent ejecting HID
> > > > endpoints without an ->input parameter so it is a needed fix anyway.
> > > > Postponing it will prevent Xbox Ally users from having RGB control
> > > > through userspace on a stock kernel but it is also not worth arguing
> > > > about
> > > >
> > > > It is also fine for me for this series to merge for 6.20, but I'd
> > > > rather we handle it now since there will be some turbulence for asus
> > > > users due to armoury merging so it makes sense to have this transition
> > > > once.
> > > >
> > > > > ---
> > > > > V9: https://lore.kernel.org/all/20251120094617.11672-1-lkml@antheas.dev/
> > > > > V8: https://lore.kernel.org/all/20251101104712.8011-1-lkml@antheas.dev/
> > > > > V7: https://lore.kernel.org/all/20251018101759.4089-1-lkml@antheas.dev/
> > > > > V6: https://lore.kernel.org/all/20251013201535.6737-1-lkml@antheas.dev/
> > > > > V5: https://lore.kernel.org/all/20250325184601.10990-1-lkml@antheas.dev/
> > > > > V4: https://lore.kernel.org/lkml/20250324210151.6042-1-lkml@antheas.dev/
> > > > > V3: https://lore.kernel.org/lkml/20250322102804.418000-1-lkml@antheas.dev/
> > > > > V2: https://lore.kernel.org/all/20250320220924.5023-1-lkml@antheas.dev/
> > > > > V1: https://lore.kernel.org/all/20250319191320.10092-1-lkml@antheas.dev/
> > > > >
> > > > > Changes since V9:
> > > > > - No functional changes
> > > > > - Rebase to review-ilpo-next
> > > > > - Fix armoury series conflict by removing the file asus-wmi-leds-ids on
> > > > > "remove unused keyboard backlight quirk" + imports
> > > > > Dismiss Luke's review as this patch diverged
> > > > > - Reword paragraph in "Add support for multiple kbd led handlers" to be
> > > > > more verbose
> > > > > - Use kfree in fortify patch
> > > > > - Fix minor style quirks from --nonstict checkpatch run
> > > > >
> > > > > Changes since V8:
> > > > > - No functional changes
> > > > > - Move legacy init patch to second, modify first patch so that their
> > > > > diff is minimized
> > > > > - Split "prevent binding to all HID devices on ROG" into two patches:
> > > > > - moving backlight initialization into probe
> > > > > - early exit to skip ->init check and rename
> > > > > - Remove skipping vendor fixups for non-vendor devices. It is not possible
> > > > > to read usages before the report fixups are applied, so it did not work
> > > > > - In that patch, reword a comment to be single line and make is_vendor a bool
> > > > > - Dismiss Luke's tags from "Add support for multiple kbd led handlers" as it
> > > > > has drifted too far since he reviewed/tested it.
> > > > >
> > > > > Changes since V7:
> > > > > - Readd legacy init quirk for Dennis
> > > > > - Remove HID_QUIRK_INPUT_PER_APP as a courtesy to asusctl
> > > > > - Fix warning due to enum_backlight receiving negative values
> > > > >
> > > > > Changes since V6:
> > > > > - Split initialization refactor into three patches, update commit text
> > > > > to be clearer in what it does
> > > > > - Replace spinlock accesses with guard and scoped guard in all patches
> > > > > - Add missing includes mentioned by Ilpo
> > > > > - Reflow, tweak comment in prevent binding to all HID devices on ROG
> > > > > - Replace asus_ref.asus with local reference in all patches
> > > > > - Add missing kernel doc comments
> > > > > - Other minor nits from Ilpo
> > > > > - User reported warning due to scheduling work while holding a spinlock.
> > > > > Restructure patch for multiple handlers to limit when spinlock is held to
> > > > > variable access only. In parallel, setup a workqueue to handle registration
> > > > > of led device and setting brightness. This is required as registering the
> > > > > led device triggers kbd_led_get which needs to hold the spinlock to
> > > > > protect the led_wk value. The workqueue is also required for the hid
> > > > > event passthrough to avoid scheduling work while holding the spinlock.
> > > > > Apply the workqueue to wmi brightness buttons as well, as that was
> > > > > omitted before this series and WMI access was performed.
> > > > > - On "HID: asus: prevent binding to all HID devices on ROG", rename
> > > > > quirk HANDLE_GENERIC to SKIP_REPORT_FIXUP and only skip report fixup.
> > > > > This allows other quirks to apply (applies quirk that fixes keyboard
> > > > > being named as a pointer device).
> > > > >
> > > > > Changes since V5:
> > > > > - It's been a long time
> > > > > - Remove addition of RGB as that had some comments I need to work on
> > > > > - Remove folio patch (already merged)
> > > > > - Remove legacy fix patch 11 from V4. There is a small chance that
> > > > > without this patch, some old NKEY keyboards might not respond to
> > > > > RGB commands according to Luke, but the kernel driver does not do
> > > > > RGB currently. The 0x5d init is done by Armoury crate software in
> > > > > Windows. If an issue is found, we can re-add it or just remove patches
> > > > > 1/2 before merging. However, init could use the cleanup.
> > > > >
> > > > > Changes since V4:
> > > > > - Fix KConfig (reported by kernel robot)
> > > > > - Fix Ilpo's nits, if I missed anything lmk
> > > > >
> > > > > Changes since V3:
> > > > > - Add initializer for 0x5d for old NKEY keyboards until it is verified
> > > > > that it is not needed for their media keys to function.
> > > > > - Cover init in asus-wmi with spinlock as per Hans
> > > > > - If asus-wmi registers WMI handler with brightness, init the brightness
> > > > > in USB Asus keyboards, per Hans.
> > > > > - Change hid handler name to asus-UNIQ:rgb:peripheral to match led class
> > > > > - Fix oops when unregistering asus-wmi by moving unregister outside of
> > > > > the spin lock (but after the asus reference is set to null)
> > > > >
> > > > > Changes since V2:
> > > > > - Check lazy init succeds in asus-wmi before setting register variable
> > > > > - make explicit check in asus_hid_register_listener for listener existing
> > > > > to avoid re-init
> > > > > - rename asus_brt to asus_hid in most places and harmonize everything
> > > > > - switch to a spinlock instead of a mutex to avoid kernel ooops
> > > > > - fixup hid device quirks to avoid multiple RGB devices while still exposing
> > > > > all input vendor devices. This includes moving rgb init to probe
> > > > > instead of the input_configured callbacks.
> > > > > - Remove fan key (during retest it appears to be 0xae that is already
> > > > > supported by hid-asus)
> > > > > - Never unregister asus::kbd_backlight while asus-wmi is active, as that
> > > > > - removes fds from userspace and breaks backlight functionality. All
> > > > > - current mainline drivers do not support backlight hotplugging, so most
> > > > > userspace software (e.g., KDE, UPower) is built with that assumption.
> > > > > For the Ally, since it disconnects its controller during sleep, this
> > > > > caused the backlight slider to not work in KDE.
> > > > >
> > > > > Changes since V1:
> > > > > - Add basic RGB support on hid-asus, (Z13/Ally) tested in KDE/Z13
> > > > > - Fix ifdef else having an invalid signature (reported by kernel robot)
> > > > > - Restore input arguments to init and keyboard function so they can
> > > > > be re-used for RGB controls.
> > > > > - Remove Z13 delay (it did not work to fix the touchpad) and replace it
> > > > > with a HID_GROUP_GENERIC quirk to allow hid-multitouch to load. Squash
> > > > > keyboard rename into it.
> > > > > - Unregister brightness listener before removing work queue to avoid
> > > > > a race condition causing corruption
> > > > > - Remove spurious mutex unlock in asus_brt_event
> > > > > - Place mutex lock in kbd_led_set after LED_UNREGISTERING check to avoid
> > > > > relocking the mutex and causing a deadlock when unregistering leds
> > > > > - Add extra check during unregistering to avoid calling unregister when
> > > > > no led device is registered.
> > > > > - Temporarily HID_QUIRK_INPUT_PER_APP from the ROG endpoint as it causes
> > > > > the driver to create 4 RGB handlers per device. I also suspect some
> > > > > extra events sneak through (KDE had the @@@@@@).
> > > > >
> > > > > Antheas Kapenekakis (11):
> > > > > HID: asus: simplify RGB init sequence
> > > > > HID: asus: initialize additional endpoints only for legacy devices
> > > > > HID: asus: use same report_id in response
> > > > > HID: asus: fortify keyboard handshake
> > > > > HID: asus: move vendor initialization to probe
> > > > > HID: asus: early return for ROG devices
> > > > > platform/x86: asus-wmi: Add support for multiple kbd led handlers
> > > > > HID: asus: listen to the asus-wmi brightness device instead of
> > > > > creating one
> > > > > platform/x86: asus-wmi: remove unused keyboard backlight quirk
> > > > > platform/x86: asus-wmi: add keyboard brightness event handler
> > > > > HID: asus: add support for the asus-wmi brightness handler
> > > > >
> > > > > drivers/hid/hid-asus.c | 205 ++++++++--------
> > > > > drivers/platform/x86/asus-wmi.c | 223 +++++++++++++++---
> > > > > .../platform_data/x86/asus-wmi-leds-ids.h | 50 ----
> > > > > include/linux/platform_data/x86/asus-wmi.h | 28 +++
> > > > > 4 files changed, 322 insertions(+), 184 deletions(-)
> > > > > delete mode 100644 include/linux/platform_data/x86/asus-wmi-leds-ids.h
> > > > >
> > > > >
> > > > > base-commit: 2643187ccb8628144246ee9d44da5e3ac428f9c3
> > > > > --
> > > > > 2.52.0
> > > > >
> > > > >
> > > >
> > >
>