mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Moad Tarrih <tarrihmoad@proton.me>
Cc: Corentin Chary <corentin.chary@gmail.com>,
	 "Luke D. Jones" <luke@ljones.dev>,
	Denis Benato <denis.benato@linux.dev>,
	 Hans de Goede <hansg@kernel.org>,
	Antheas Kapenekakis <lkml@antheas.dev>,
	 Benjamin Tissoires <bentiss@kernel.org>,
	 Sercan GOKMEN <gokmensercan@gmail.com>,
	Burak Goncu <burakgon12@gmail.com>,
	 Denis Benato <benato.denis96@gmail.com>,
	 platform-driver-x86@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>,
	 stable@vger.kernel.org
Subject: Re: [PATCH v3] platform/x86: asus-wmi: Ignore unusable kbd backlight WMI device on ROG Strix G814FP
Date: Wed, 11 Nov 2026 14:19:46 +0200 (EET)	[thread overview]
Message-ID: <358b5f4f-d7ed-2e5c-81a0-f5640e3e12c0@linux.intel.com> (raw)
In-Reply-To: <20261110-asus-wmi-kbd-readback-v3-1-646adf2b8629@proton.me>

On Tue, 10 Nov 2026, Moad Tarrih via B4 Relay wrote:

> From: Moad Tarrih <tarrihmoad@proton.me>
> 
> On the ASUS ROG Strix G18 G814FP, writing a level to the keyboard
> backlight brightness in sysfs works, but reading it back always gives
> 0, and the read makes the Fn brightness keys misbehave.
> 
> The firmware reports the keyboard backlight WMI device as present but
> doesn't implement it. DSTS(0x00050021) always returns 0x50000, which
> is level 0 regardless of what the actual level is, and every
> DEVS(0x00050021) write is rejected as an unsupported method. The
> keyboard backlight is actually driven by hid-asus.

> asus-wmi saves the 0
> as the current level on every read, and the brightness keys step from
> the saved level. So after any read, for example by the desktop or by
> systemd-backlight, the brightness-up key sets the keyboard to the
> lowest level instead of one step higher.

This seems just unnecessary fluff. LLMs tends to overword changelogs, 
please be mindful with that when reviewing the output you got from LLM.

> Add a kbd_led_no_wmi quirk that makes asus-wmi treat the keyboard
> backlight WMI device as absent, and set it for this board, matched on
> the DMI board name. asus-wmi then keeps the LED registered for hid-asus
> and no longer reads from or writes to the WMI device.
> 
> With its own quirk entry, the board no longer gets
> wmi_backlight_set_devstate from the default quirk_asus_unknown. That
> flag makes asus-wmi write DEVS(0x00050012, 2) at probe, but this
> firmware rejects both DSTS and DEVS on 0x00050012 as unsupported
> methods, so the write never did anything here.

I think this paragraph too just makes changelog longer for no reason.

> As a side effect, the kbd_rgb_mode and kbd_rgb_mode_index attributes are
> no longer created on this board, they never worked here since the firmware
> rejects those writes as well.
> 
> This patch was written with the help of an AI coding assistant (Claude
> Code, Claude Opus 5.5). I reviewed it and tested it on my affected laptop.

Notes on how a patch was prepared belong under --- line.

> Fixes: fac55d29581f ("platform/x86: asus-wmi: Add support for multiple kbd led handlers")
> Suggested-by: Antheas Kapenekakis <lkml@antheas.dev>
> Suggested-by: Denis Benato <denis.benato@linux.dev>
> Cc: stable@vger.kernel.org
> Signed-off-by: Moad Tarrih <tarrihmoad@proton.me>
> Reviewed-by: Antheas Kapenekakis <lkml@antheas.dev>
> ---
> Tested on an ASUS ROG Strix G18 (board G814FP, BIOS G814FP.317,
> keyboard 0b05:19b6) on 7.2.14, built as DKMS modules. The keyboard
> backlight is still registered and driven by hid-asus, the attribute
> reads back the level that was set, the brightness keys step from the
> real level, and the level survives suspend/resume and reboots. v3
> was retested the same way, and the screen backlight
> (nvidia_wmi_ec_backlight) still works without
> wmi_backlight_set_devstate.
> Build-tested with W=1 against pdx86 for-next (c339f4010dea): no
> warnings. checkpatch --strict is clean.
> 
> The kbd_rgb_mode and kbd_rgb_mode_index attributes are no longer
> created on this board. They never worked here: writes to kbd_rgb_mode
> are rejected by the firmware with -ENODEV, like the brightness writes.
> 
> To answer Denis's questions on v1, the bug this patch fixes happens on
> the latest BIOS for this board as of writing, which is version 317.
> I only have the G814FP, so I don't know if other 2025 G814 models
> are affected, the quirk only matches G814FP.
> 
> This no longer depends on Sercan GOKMEN's kbd_led_no_readback patch.
> Both patches add a field to struct quirk_entry and a DMI entry, so
> whichever lands second may need a trivial rebase.
> 
> AI assistance: Claude Code was used to trace the keyboard backlight
> code in asus-wmi, run the debugfs DSTS/DEVS probes, write the patch and
> draft this message. Testing and final review were done by me on the
> hardware.
> ---
> Changes in v3:
> - Drop the comment on kbd_led_no_wmi (Antheas).
> - Don't set wmi_backlight_set_devstate for this board: the firmware
>   rejects both DSTS and DEVS on 0x00050012, so the write did nothing
>   (Antheas).
> - Add Antheas's Reviewed-by.
> - Link to v2: https://patch.msgid.link/20261109-asus-wmi-kbd-readback-v2-1-c048fc53d8ee@proton.me
> 
> Changes in v2:
> - Add a quirk that makes asus-wmi skip the keyboard backlight WMI
>   device on this board instead of detecting rejected writes at
>   runtime (Antheas), so no more WMI writes that are known to fail
>   are issued (Denis).
> - Link to v1: https://patch.msgid.link/20261108-asus-wmi-kbd-readback-v1-1-bf38f6400ade@proton.me
> ---
>  drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++
>  drivers/platform/x86/asus-wmi.c    |  3 ++-
>  drivers/platform/x86/asus-wmi.h    |  1 +
>  3 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> index 3b0f3346dc60..9b2a4b829885 100644
> --- a/drivers/platform/x86/asus-nb-wmi.c
> +++ b/drivers/platform/x86/asus-nb-wmi.c
> @@ -93,6 +93,10 @@ static struct quirk_entry quirk_asus_unknown = {
>  	.wmi_backlight_set_devstate = true,
>  };
>  
> +static struct quirk_entry quirk_asus_g814fp = {
> +	.kbd_led_no_wmi = true,
> +};
> +
>  static struct quirk_entry quirk_asus_q500a = {
>  	.filter_i8042_e1_extended_codes = true,
>  	.wmi_backlight_set_devstate = true,
> @@ -167,6 +171,15 @@ static int dmi_matched(const struct dmi_system_id *dmi)
>  }
>  
>  static const struct dmi_system_id asus_quirks[] = {
> +	{
> +		.callback = dmi_matched,
> +		.ident = "ASUS ROG Strix G18 G814FP",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> +			DMI_MATCH(DMI_BOARD_NAME, "G814FP"),
> +		},
> +		.driver_data = &quirk_asus_g814fp,
> +	},
>  	{
>  		.callback = dmi_matched,
>  		.ident = "ASUSTeK COMPUTER INC. Q500A",
> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
> index b33ebdb21aa2..51fea21ff247 100644
> --- a/drivers/platform/x86/asus-wmi.c
> +++ b/drivers/platform/x86/asus-wmi.c
> @@ -2165,7 +2165,8 @@ static int asus_wmi_led_init(struct asus_wmi *asus)
>  	asus->kbd_led.brightness_set_blocking = kbd_led_set;
>  	asus->kbd_led.brightness_get = kbd_led_get;
>  	asus->kbd_led.max_brightness = ASUS_EV_MAX_BRIGHTNESS;
> -	asus->kbd_led_avail = !kbd_led_read(asus, &led_val, NULL);
> +	asus->kbd_led_avail = !asus->driver->quirks->kbd_led_no_wmi &&
> +			      !kbd_led_read(asus, &led_val, NULL);
>  	INIT_WORK(&asus->kbd_led_work, kbd_led_update_all);
>  
>  	if (asus->kbd_led_avail) {
> diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
> index b45f81b38a47..e53c6b3fc619 100644
> --- a/drivers/platform/x86/asus-wmi.h
> +++ b/drivers/platform/x86/asus-wmi.h
> @@ -41,6 +41,7 @@ struct quirk_entry {
>  	bool wmi_force_als_set;
>  	bool wmi_ignore_fan;
>  	bool filter_i8042_e1_extended_codes;
> +	bool kbd_led_no_wmi;
>  	int key_wlan_event;
>  	enum asus_wmi_tablet_switch_mode tablet_switch_mode;
>  	int wapf;
> 
> ---
> base-commit: c339f4010dea8b0d754f84ace70cd1b089878ef8
> change-id: 20261108-asus-wmi-kbd-readback-236245e82de8
> 
> Best regards,
> --  
> Moad Tarrih <tarrihmoad@proton.me>
> 
> 

-- 
 i.


      reply	other threads:[~2026-11-11 12:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-10 16:50 Moad Tarrih via B4 Relay
2026-11-11 12:19 ` Ilpo Järvinen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=358b5f4f-d7ed-2e5c-81a0-f5640e3e12c0@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=benato.denis96@gmail.com \
    --cc=bentiss@kernel.org \
    --cc=burakgon12@gmail.com \
    --cc=corentin.chary@gmail.com \
    --cc=denis.benato@linux.dev \
    --cc=gokmensercan@gmail.com \
    --cc=hansg@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkml@antheas.dev \
    --cc=luke@ljones.dev \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tarrihmoad@proton.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®