Re: [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling

From: Ilpo Järvinen

Date: Mon Feb 23 2026 - 09:38:38 EST


On Thu, 12 Feb 2026, Denis Benato wrote:

> Fix illogical screen off control by hardcoding 0 and 1 depending on the
> requested brightness and also do not rely on the last screenpad
> power state to issue screen brightness commands.

Should this have a Fixes tag?

> Signed-off-by: Denis Benato <denis.benato@xxxxxxxxx>
> Signed-off-by: Luke Jones <luke@xxxxxxxxxx>
> ---
> drivers/platform/x86/asus-wmi.c | 34 +++++++++++++--------------------
> 1 file changed, 13 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
> index 0775fadedd10..4130dae37e15 100644
> --- a/drivers/platform/x86/asus-wmi.c
> +++ b/drivers/platform/x86/asus-wmi.c
> @@ -4254,32 +4254,24 @@ static int read_screenpad_brightness(struct backlight_device *bd)
>
> static int update_screenpad_bl_status(struct backlight_device *bd)
> {
> - struct asus_wmi *asus = bl_get_data(bd);
> - int power, err = 0;
> - u32 ctrl_param;
> + int err = 0;
> + u32 ctrl_param = bd->props.brightness;

Please retain reverse xmas-tree order.

>
> - power = read_screenpad_backlight_power(asus);
> - if (power < 0)
> - return power;
> + if (ctrl_param >= 0 && bd->props.power) {
> + err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 1, NULL);
> + if (err < 0)
> + return err;
>
> - if (bd->props.power != power) {
> - if (power != BACKLIGHT_POWER_ON) {
> - /* Only brightness > 0 can power it back on */
> - ctrl_param = asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN;
> - err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT,
> - ctrl_param, NULL);
> - } else {
> - err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 0, NULL);
> - }
> - } else if (power == BACKLIGHT_POWER_ON) {
> - /* Only set brightness if powered on or we get invalid/unsync state */
> - ctrl_param = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN;
> err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT, ctrl_param, NULL);
> + if (err < 0)
> + return err;
> }
>
> - /* Ensure brightness is stored to turn back on with */
> - if (err == 0)
> - asus->driver->screenpad_brightness = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN;
> + if (!bd->props.power) {
> + err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 0, NULL);
> + if (err < 0)
> + return err;
> + }
>
> return err;
> }
>

--
i.