All of lore.kernel.org
 help / color / mirror / Atom feed
* asus-wmi: screenpad backlight power state is never read back (UX5400EA)
@ 2026-09-09 19:20 hugo baigue
  2026-09-09 19:28 ` Denis Benato
  0 siblings, 1 reply; 5+ messages in thread
From: hugo baigue @ 2026-09-09 19:20 UTC (permalink / raw)
  To: platform-driver-x86, corentin.chary, luke, denis.benato, hansg,
	ilpo.jarvinen

platform/x86: asus-wmi: screenpad backlight power state is never read back

Hardware: ASUS ZenBook 14X OLED UX5400EA, ScreenPad 2.0 (2160x1080 panel,
exposed on HDMI-A-2), kernel 7.1.9.

asus-wmi registers the `asus_screenpad` backlight device and knows both
ASUS_WMI_DEVID_SCREENPAD_POWER (0x00050031) and SCREENPAD_LIGHT (0x00050032).
However the power state exposed through `bl_power` neither reflects the
firmware state nor allows changing it.

The firmware leaves the ScreenPad panel off at boot. While it is off the DRM
connector stays `disconnected`, so the panel is indistinguishable from an empty
port and no userspace can use it.

Observed:

  step                          bl_power   firmware (DSTS 0x00050031)   HDMI-A-2
  panel on                      0          0x100a0
 connected
  panel powered off by firmware 0          0x10000                      gone
  write bl_power 0 / 1 / 0      0          0x10000                      gone
  DEVS 0x00050031 = 1 via ACPI  0          0x100a0
 connected

Two distinct problems:

1. `bl_power` reports 0 (FB_BLANK_UNBLANK, "on") while the panel is powered
   down. Nothing reads the state back from the firmware, so the attribute is
   stale from the moment the firmware changes it on its own — which it does on
   boot, on resume, and whenever the panel brightness is driven low.

2. Writing `bl_power` does not restore the panel. Calling the same device id
   directly through acpi_call does:

     echo '\_SB.ATKD.WMNB 0x0 0x53564544 b3100050001000000' > /proc/acpi/call

Consequence: on this machine the ScreenPad is unusable without an out-of-tree
helper, even though the driver already knows the device id needed to drive it.

A related detail that may matter for the fix: on this firmware, writing a low
brightness value to /sys/class/backlight/asus_screenpad/brightness (tested 0, 1,
30, 50, 100, 120, 150) makes DSTS 0x00050031 return 0 and the DRM connector
disappear. Brightness and power appear to be a single firmware setting, so
clamping or refusing low values may be needed alongside the state read-back.

The DSDT also exposes three device ids in the same family that the driver does
not use: 0x00050033 (returns a constant, likely a presence flag), 0x00050034
(toggles a bit in the EC), and 0x00050035 (writes EC commands 5 and 6 on the
same path as POWER).

Workaround and full analysis:
https://github.com/izigower/asus-screenpad-linux

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-09-11  8:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 19:20 asus-wmi: screenpad backlight power state is never read back (UX5400EA) hugo baigue
2026-09-09 19:28 ` Denis Benato
2026-09-10  8:48   ` hugo baigue
2026-09-11  2:17     ` Denis Benato
2026-09-11  8:25       ` hugo baigue

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.