* [PATCH 0/2] platform/x86: asus-wmi: fix screenpad brightness/power management @ 2026-02-12 22:02 Denis Benato 2026-02-12 22:02 ` [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling Denis Benato 2026-02-12 22:02 ` [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling Denis Benato 0 siblings, 2 replies; 8+ messages in thread From: Denis Benato @ 2026-02-12 22:02 UTC (permalink / raw) To: linux-kernel Cc: platform-driver-x86, Hans de Goede, Ilpo Järvinen, Luke D . Jones, Mateusz Schyboll, Denis Benato, Denis Benato Fix up some inconsistent behaviour involving the screenpad on some ASUS laptops. This fixes: - illogical screen off control (0/1 flipped depending on WMI state) - bad brightness depending on the last screenpad power state - incorrect brightness scaling Changelog: - v1 - Initial submission - v2 - Split patch in two - Remove a redundant variable copy Denis Benato (2): platform/x86: asus-wmi: adjust screenpad power/brightness handling platform/x86: asus-wmi: fix screenpad brightness scaling drivers/platform/x86/asus-wmi.c | 50 +++++++++++++-------------------- 1 file changed, 19 insertions(+), 31 deletions(-) -- 2.53.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling 2026-02-12 22:02 [PATCH 0/2] platform/x86: asus-wmi: fix screenpad brightness/power management Denis Benato @ 2026-02-12 22:02 ` Denis Benato 2026-02-23 14:38 ` Ilpo Järvinen 2026-02-12 22:02 ` [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling Denis Benato 1 sibling, 1 reply; 8+ messages in thread From: Denis Benato @ 2026-02-12 22:02 UTC (permalink / raw) To: linux-kernel Cc: platform-driver-x86, Hans de Goede, Ilpo Järvinen, Luke D . Jones, Mateusz Schyboll, Denis Benato, Denis Benato 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. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev> --- 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; - 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; } -- 2.53.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling 2026-02-12 22:02 ` [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling Denis Benato @ 2026-02-23 14:38 ` Ilpo Järvinen 2026-02-23 18:15 ` Denis Benato 0 siblings, 1 reply; 8+ messages in thread From: Ilpo Järvinen @ 2026-02-23 14:38 UTC (permalink / raw) To: Denis Benato Cc: LKML, platform-driver-x86, Hans de Goede, Luke D . Jones, Mateusz Schyboll, Denis Benato 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@linux.dev> > Signed-off-by: Luke Jones <luke@ljones.dev> > --- > 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. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling 2026-02-23 14:38 ` Ilpo Järvinen @ 2026-02-23 18:15 ` Denis Benato 2026-02-24 4:15 ` luke 0 siblings, 1 reply; 8+ messages in thread From: Denis Benato @ 2026-02-23 18:15 UTC (permalink / raw) To: Ilpo Järvinen Cc: LKML, platform-driver-x86, Hans de Goede, Luke D . Jones, Mateusz Schyboll, Denis Benato On 2/23/26 15:38, Ilpo Järvinen wrote: > 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? > Same for the other patch: I am not sure. What I know for certain is that Luke had an asus DUO to test this patch with and most certainly it was because someone contacted him about these bugs. I split up commits found int the previous version of this patch: https://lore.kernel.org/all/20250525204214.104030-1-luke@ljones.dev/ I changed nothing else beside removing a redundant variable assignment. >> Signed-off-by: Denis Benato <denis.benato@linux.dev> >> Signed-off-by: Luke Jones <luke@ljones.dev> >> --- >> 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; >> } >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling 2026-02-23 18:15 ` Denis Benato @ 2026-02-24 4:15 ` luke 2026-02-24 20:42 ` Denis Benato 0 siblings, 1 reply; 8+ messages in thread From: luke @ 2026-02-24 4:15 UTC (permalink / raw) To: Denis Benato Cc: Ilpo Järvinen, LKML, platform-driver-x86, Hans de Goede, Mateusz Schyboll, Denis Benato > On 24 Feb 2026, at 07:15, Denis Benato <denis.benato@linux.dev> wrote: > > > On 2/23/26 15:38, Ilpo Järvinen wrote: >> 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? >> > Same for the other patch: I am not sure. It probably should be a fixes tag. Though there is no reference bug report or other relating to it - only my discovery that the previously written code was in fact not right. I had written the initial version that is in the kernel based on some limited testing feedback from a user who was not able to clearly articulate what the issues were and was happy with the final result. I was able to get my hands on a Zenbook Duo and fully test this, which is how I discovered the issues. > What I know for certain is that Luke had an asus DUO to test this patch with > and most certainly it was because someone contacted him about these bugs. > > I split up commits found int the previous version of this patch: > https://lore.kernel.org/all/20250525204214.104030-1-luke@ljones.dev/ Thanks for doing this. I just have not had any time to do it myself, very low on the priority list but I would wager getting this all fixed correctly will enable both Older and newer models to function how they should. > I changed nothing else beside removing a redundant variable assignment. >>> Signed-off-by: Denis Benato <denis.benato@linux.dev> >>> Signed-off-by: Luke Jones <luke@ljones.dev> >>> --- >>> 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; >>> } >>> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling 2026-02-24 4:15 ` luke @ 2026-02-24 20:42 ` Denis Benato 0 siblings, 0 replies; 8+ messages in thread From: Denis Benato @ 2026-02-24 20:42 UTC (permalink / raw) To: luke Cc: Ilpo Järvinen, LKML, platform-driver-x86, Hans de Goede, Mateusz Schyboll, Denis Benato On 2/24/26 05:15, luke@ljones.dev wrote: >> On 24 Feb 2026, at 07:15, Denis Benato <denis.benato@linux.dev> wrote: >> >> >> On 2/23/26 15:38, Ilpo Järvinen wrote: >>> 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? >>> >> Same for the other patch: I am not sure. > It probably should be a fixes tag. Though there is no reference bug report or > other relating to it - only my discovery that the previously written code was in > fact not right. > > I had written the initial version that is in the kernel based on some limited testing > feedback from a user who was not able to clearly articulate what the issues > were and was happy with the final result. > > I was able to get my hands on a Zenbook Duo and fully test this, which is how > I discovered the issues. Actually... my bad. I confused "Closes" with "Fixes". Ilpo meant to reference the original commit. Sorry for the noise. I will dig those two tags. >> What I know for certain is that Luke had an asus DUO to test this patch with >> and most certainly it was because someone contacted him about these bugs. >> >> I split up commits found int the previous version of this patch: >> https://lore.kernel.org/all/20250525204214.104030-1-luke@ljones.dev/ > Thanks for doing this. I just have not had any time to do it myself, very low on > the priority list but I would wager getting this all fixed correctly will enable both > Older and newer models to function how they should. > >> I changed nothing else beside removing a redundant variable assignment. >>>> Signed-off-by: Denis Benato <denis.benato@linux.dev> >>>> Signed-off-by: Luke Jones <luke@ljones.dev> >>>> --- >>>> 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; >>>> } >>>> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling 2026-02-12 22:02 [PATCH 0/2] platform/x86: asus-wmi: fix screenpad brightness/power management Denis Benato 2026-02-12 22:02 ` [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling Denis Benato @ 2026-02-12 22:02 ` Denis Benato 2026-02-23 14:42 ` Ilpo Järvinen 1 sibling, 1 reply; 8+ messages in thread From: Denis Benato @ 2026-02-12 22:02 UTC (permalink / raw) To: linux-kernel Cc: platform-driver-x86, Hans de Goede, Ilpo Järvinen, Luke D . Jones, Mateusz Schyboll, Denis Benato, Denis Benato Fix incorrect brightness scaling by removing the inconsistent use of an arbitrary minimum. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev> --- drivers/platform/x86/asus-wmi.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 4130dae37e15..5443aaf99e38 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -125,7 +125,6 @@ module_param(fnlock_default, bool, 0444); #define NVIDIA_TEMP_MIN 75 #define NVIDIA_TEMP_MAX 87 -#define ASUS_SCREENPAD_BRIGHT_MIN 20 #define ASUS_SCREENPAD_BRIGHT_MAX 255 #define ASUS_SCREENPAD_BRIGHT_DEFAULT 60 @@ -4243,13 +4242,13 @@ static int read_screenpad_brightness(struct backlight_device *bd) return err; /* The device brightness can only be read if powered, so return stored */ if (err == BACKLIGHT_POWER_OFF) - return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; + return bd->props.brightness; err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &retval); if (err < 0) return err; - return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN; + return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK); } static int update_screenpad_bl_status(struct backlight_device *bd) @@ -4289,22 +4288,19 @@ static int asus_screenpad_init(struct asus_wmi *asus) int err, power; int brightness = 0; - power = read_screenpad_backlight_power(asus); + power = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_SCREENPAD_POWER); if (power < 0) return power; - if (power != BACKLIGHT_POWER_OFF) { + if (power) { err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &brightness); if (err < 0) return err; } - /* default to an acceptable min brightness on boot if too low */ - if (brightness < ASUS_SCREENPAD_BRIGHT_MIN) - brightness = ASUS_SCREENPAD_BRIGHT_DEFAULT; memset(&props, 0, sizeof(struct backlight_properties)); props.type = BACKLIGHT_RAW; /* ensure this bd is last to be picked */ - props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN; + props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX; bd = backlight_device_register("asus_screenpad", &asus->platform_device->dev, asus, &asus_screenpad_bl_ops, &props); @@ -4315,7 +4311,7 @@ static int asus_screenpad_init(struct asus_wmi *asus) asus->screenpad_backlight_device = bd; asus->driver->screenpad_brightness = brightness; - bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN; + bd->props.brightness = brightness; bd->props.power = power; backlight_update_status(bd); -- 2.53.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling 2026-02-12 22:02 ` [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling Denis Benato @ 2026-02-23 14:42 ` Ilpo Järvinen 0 siblings, 0 replies; 8+ messages in thread From: Ilpo Järvinen @ 2026-02-23 14:42 UTC (permalink / raw) To: Denis Benato Cc: LKML, platform-driver-x86, Hans de Goede, Luke D . Jones, Mateusz Schyboll, Denis Benato On Thu, 12 Feb 2026, Denis Benato wrote: > Fix incorrect brightness scaling by removing the inconsistent use of an > arbitrary minimum. > > Signed-off-by: Denis Benato <denis.benato@linux.dev> > Signed-off-by: Luke Jones <luke@ljones.dev> Should this have a Fixes tag? > --- > drivers/platform/x86/asus-wmi.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c > index 4130dae37e15..5443aaf99e38 100644 > --- a/drivers/platform/x86/asus-wmi.c > +++ b/drivers/platform/x86/asus-wmi.c > @@ -125,7 +125,6 @@ module_param(fnlock_default, bool, 0444); > #define NVIDIA_TEMP_MIN 75 > #define NVIDIA_TEMP_MAX 87 > > -#define ASUS_SCREENPAD_BRIGHT_MIN 20 > #define ASUS_SCREENPAD_BRIGHT_MAX 255 > #define ASUS_SCREENPAD_BRIGHT_DEFAULT 60 > > @@ -4243,13 +4242,13 @@ static int read_screenpad_brightness(struct backlight_device *bd) > return err; > /* The device brightness can only be read if powered, so return stored */ > if (err == BACKLIGHT_POWER_OFF) > - return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; > + return bd->props.brightness; > > err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &retval); > if (err < 0) > return err; > > - return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN; > + return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK); > } > > static int update_screenpad_bl_status(struct backlight_device *bd) > @@ -4289,22 +4288,19 @@ static int asus_screenpad_init(struct asus_wmi *asus) > int err, power; > int brightness = 0; > > - power = read_screenpad_backlight_power(asus); > + power = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_SCREENPAD_POWER); > if (power < 0) > return power; > > - if (power != BACKLIGHT_POWER_OFF) { > + if (power) { > err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &brightness); > if (err < 0) > return err; > } > - /* default to an acceptable min brightness on boot if too low */ > - if (brightness < ASUS_SCREENPAD_BRIGHT_MIN) > - brightness = ASUS_SCREENPAD_BRIGHT_DEFAULT; This doesn't seem to be related to the scaling but looks a lowerbound? Probably removing it would warrant own patch + justification, IMO. > memset(&props, 0, sizeof(struct backlight_properties)); > props.type = BACKLIGHT_RAW; /* ensure this bd is last to be picked */ > - props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN; > + props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX; > bd = backlight_device_register("asus_screenpad", > &asus->platform_device->dev, asus, > &asus_screenpad_bl_ops, &props); > @@ -4315,7 +4311,7 @@ static int asus_screenpad_init(struct asus_wmi *asus) > > asus->screenpad_backlight_device = bd; > asus->driver->screenpad_brightness = brightness; > - bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN; > + bd->props.brightness = brightness; > bd->props.power = power; > backlight_update_status(bd); > > -- i. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-02-24 20:42 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-12 22:02 [PATCH 0/2] platform/x86: asus-wmi: fix screenpad brightness/power management Denis Benato 2026-02-12 22:02 ` [PATCH 1/2] platform/x86: asus-wmi: adjust screenpad power/brightness handling Denis Benato 2026-02-23 14:38 ` Ilpo Järvinen 2026-02-23 18:15 ` Denis Benato 2026-02-24 4:15 ` luke 2026-02-24 20:42 ` Denis Benato 2026-02-12 22:02 ` [PATCH 2/2] platform/x86: asus-wmi: fix screenpad brightness scaling Denis Benato 2026-02-23 14:42 ` Ilpo Järvinen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox