From: Denis Benato <denis.benato@linux.dev>
To: platform-driver-x86@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Hans de Goede" <hansg@kernel.org>,
"Corentin Chary" <corentin.chary@gmail.com>,
"Luke Jones" <luke@ljones.dev>,
"Hugo Baigue" <hugobaigue2004@gmail.com>,
Ponali <ponali2k@gmail.com>,
"Manuel A. R. de Orúe Ríos" <deor001@gmail.com>,
"Salvatore Bonaccorso" <carnil@debian.org>,
"Thorsten Leemhuis" <regressions@leemhuis.info>,
"Denis Benato" <benato.denis96@gmail.com>,
"Denis Benato" <denis.benato@linux.dev>
Subject: [PATCH v1 3/4] platform/x86: asus-wmi: use backlight_is_blank() for screenpad power
Date: Wed, 16 Sep 2026 14:38:27 +0000 [thread overview]
Message-ID: <20260916143838.170950-4-denis.benato@linux.dev> (raw)
In-Reply-To: <20260916143838.170950-1-denis.benato@linux.dev>
The screenpad backlight sets BL_CORE_SUSPENDRESUME, so the backlight
core calls update_status() on suspend, resume and fb blanking with
BL_CORE_SUSPENDED or BL_CORE_FBBLANK set in bd->props.state while
bd->props.power keeps its value: the switch on bd->props.power alone
ignored those flags, repowering the panel at suspend entry instead of
turning it off, and ignoring fb blank requests.
Replace the switch with backlight_is_blank(), which accounts for both
bd->props.power and bd->props.state: the panel is powered off whenever
the backlight is blank and powered on with backlight_get_brightness()
otherwise. Writing a power state other than BACKLIGHT_POWER_ON or
BACKLIGHT_POWER_OFF to bl_power now blanks the panel following the
core convention instead of warning and failing with -EINVAL.
The visible change is that the panel now actually powers off on
suspend and fb blank, and is restored on unblank and resume.
Suggested-by: Hugo Baigue <hugobaigue2004@gmail.com>
Closes: https://lore.kernel.org/all/CAO84+xJ9aW3pj3x8e9b5biWtnNd4EyH7A4Uy7aqBR4qZMDcVvg@mail.gmail.com/
Assisted-by: zcode:glm-5.3-flash
Signed-off-by: Denis Benato <denis.benato@linux.dev>
---
drivers/platform/x86/asus-wmi.c | 32 +++++++++-----------------------
1 file changed, 9 insertions(+), 23 deletions(-)
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index ded1aa356cf3..e6f3a5c0dba9 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -4536,32 +4536,18 @@ static int read_screenpad_brightness(struct backlight_device *bd)
static int update_screenpad_bl_status(struct backlight_device *bd)
{
- u32 ctrl_param = bd->props.brightness;
- int err = 0;
-
- switch (bd->props.power) {
- case BACKLIGHT_POWER_ON:
- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 1, NULL);
- if (err < 0)
- return err;
-
- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT, ctrl_param, NULL);
- if (err < 0)
- return err;
- break;
+ int err;
- case BACKLIGHT_POWER_OFF:
- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 0, NULL);
- if (err < 0)
- return err;
- break;
+ if (backlight_is_blank(bd))
+ return asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER,
+ 0, NULL);
- default:
- pr_warn("Invalid screenpad backlight power state: %d\n", bd->props.power);
- return -EINVAL;
- }
+ err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 1, NULL);
+ if (err < 0)
+ return err;
- return err;
+ return asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT,
+ backlight_get_brightness(bd), NULL);
}
static const struct backlight_ops asus_screenpad_bl_ops = {
--
2.47.3
next prev parent reply other threads:[~2026-09-16 14:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 14:38 [PATCH v1 0/4] platform/x86: asus-wmi: fix screenpad backlight regression Denis Benato
2026-09-16 14:38 ` [PATCH v1 1/4] platform/x86: asus-wmi: fix unclear usage of bd->props.power Denis Benato
2026-09-16 14:38 ` [PATCH v1 2/4] platform/x86: asus-wmi: fix screenpad power state detection Denis Benato
2026-09-16 14:38 ` Denis Benato [this message]
2026-09-16 14:38 ` [PATCH v1 4/4] platform/x86: asus-wmi: remove unused screenpad_brightness Denis Benato
2026-09-18 18:27 ` [PATCH v1 0/4] platform/x86: asus-wmi: fix screenpad backlight regression Ilpo Järvinen
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=20260916143838.170950-4-denis.benato@linux.dev \
--to=denis.benato@linux.dev \
--cc=benato.denis96@gmail.com \
--cc=carnil@debian.org \
--cc=corentin.chary@gmail.com \
--cc=deor001@gmail.com \
--cc=hansg@kernel.org \
--cc=hugobaigue2004@gmail.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luke@ljones.dev \
--cc=platform-driver-x86@vger.kernel.org \
--cc=ponali2k@gmail.com \
--cc=regressions@leemhuis.info \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.