* [PATCH 0/2] platform/x86: hp-wmi: HP OmniBook Ultra 14-kd0xxx (8EB4) fixes
@ 2026-11-12 2:54 Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 1/2] platform/x86: hp-wmi: Only use the low byte of the thermal profile Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 2/2] platform/x86: hp-wmi: Add charge_behaviour quirk for OmniBook Ultra 14 Samuel Wheeler via B4 Relay
0 siblings, 2 replies; 3+ messages in thread
From: Samuel Wheeler via B4 Relay @ 2026-11-12 2:54 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Shang En Sim, Samuel Wheeler
Two small hp-wmi changes for the HP OmniBook Ultra Laptop 14-kd0xxx
(board 8EB4, BIOS F.06, Panther Lake):
1. The thermal profile query returns status flags in its upper bytes,
so reading the platform profile always fails with -EINVAL. Use only
the low byte.
2. The laptop has the same battery charge mode interface as the
Spectre 8C15/8C17. Add it to the charge_behaviour quirk list.
Both were tested on the laptop with the same code changes applied to the
hp-wmi of a 7.2.15-based distribution kernel. The patches themselves are
against pdx86 for-next and build there with W=1 without warnings;
checkpatch --strict is clean.
Patch 2 touches the same quirk table as the pending "platform/x86:
hp-wmi: Add OmniBook 7 14-fr0xxx to charge_behaviour quirks"
(https://lore.kernel.org/r/20261102155409.3061761-1-taranarmo@gmail.com),
so whichever is applied second will need a trivial rebase.
The ACPI analysis, the changes and these descriptions were prepared with
an AI coding assistant (Claude, by Anthropic), as described in each
patch. I reviewed them and ran the tests myself.
---
Samuel Wheeler (2):
platform/x86: hp-wmi: Only use the low byte of the thermal profile
platform/x86: hp-wmi: Add charge_behaviour quirk for OmniBook Ultra 14
drivers/platform/x86/hp/hp-wmi.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
---
base-commit: a514d723595bd8e5ce926a7fea148ceb3c26915c
change-id: 20261111-omnibook-8eb4-78891e074a1f
Best regards,
--
Samuel Wheeler <swheel33@gmail.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] platform/x86: hp-wmi: Only use the low byte of the thermal profile
2026-11-12 2:54 [PATCH 0/2] platform/x86: hp-wmi: HP OmniBook Ultra 14-kd0xxx (8EB4) fixes Samuel Wheeler via B4 Relay
@ 2026-11-12 2:54 ` Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 2/2] platform/x86: hp-wmi: Add charge_behaviour quirk for OmniBook Ultra 14 Samuel Wheeler via B4 Relay
1 sibling, 0 replies; 3+ messages in thread
From: Samuel Wheeler via B4 Relay @ 2026-11-12 2:54 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Shang En Sim, Samuel Wheeler
From: Samuel Wheeler <swheel33@gmail.com>
On the HP OmniBook Ultra Laptop 14-kd0xxx (board 8EB4, BIOS F.06), the
HPWMI_THERMAL_PROFILE_QUERY read returns the active profile in byte 0,
followed by status flags and a constant. With the "default" profile
active the four bytes are 01 11 04 00. thermal_profile_get() returns the
whole 32-bit value (0x041101), which matches none of the
HP_THERMAL_PROFILE_* values, so reading the platform profile always
fails with -EINVAL:
platform_profile: Failed to get profile for handler hp-wmi
and /sys/firmware/acpi/platform_profile returns "Invalid argument".
The firmware's GTPS method (in the SSDT that defines \_SB.WMID) fills
byte 0 from the EC field GFCM (0-5), byte 1 with status flags (ONTB,
INBG, DPIN, PWDN, IBGE, MSFG) and byte 2 with 0x04. Setting a profile
already works: GFCM becomes 0, 1, 2 and 3 for performance, default, cool
and quiet.
Mask the value to its low byte. This also stops
thermal_profile_setup() from writing the status bytes back through
thermal_profile_set(tp) at probe time. That write was harmless on this
firmware, whose STPS method only reads byte 0, but it was not intended.
On firmware that already returns a zero-extended value the mask changes
nothing.
Tested on the OmniBook Ultra 14-kd0xxx: platform_profile reads
"balanced" instead of failing, and each profile reads back after being
set.
This patch was prepared with an AI coding assistant (Claude, by
Anthropic). It decompiled the ACPI tables, traced the WMI query, wrote
the change and this description, and ran the tests on my laptop under
my direction. I reviewed the change and the test results.
Signed-off-by: Samuel Wheeler <swheel33@gmail.com>
---
drivers/platform/x86/hp/hp-wmi.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
index 0069af86800e..46c9a5a532ba 100644
--- a/drivers/platform/x86/hp/hp-wmi.c
+++ b/drivers/platform/x86/hp/hp-wmi.c
@@ -2117,7 +2117,16 @@ static int platform_profile_omen_set(struct device *dev,
static int thermal_profile_get(void)
{
- return hp_wmi_read_int(HPWMI_THERMAL_PROFILE_QUERY);
+ int tp = hp_wmi_read_int(HPWMI_THERMAL_PROFILE_QUERY);
+
+ if (tp < 0)
+ return tp;
+
+ /*
+ * The profile is in the low byte. Some firmware (e.g. board 8EB4)
+ * returns status flags and a constant in the upper bytes.
+ */
+ return tp & 0xff;
}
static int thermal_profile_set(int thermal_profile)
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] platform/x86: hp-wmi: Add charge_behaviour quirk for OmniBook Ultra 14
2026-11-12 2:54 [PATCH 0/2] platform/x86: hp-wmi: HP OmniBook Ultra 14-kd0xxx (8EB4) fixes Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 1/2] platform/x86: hp-wmi: Only use the low byte of the thermal profile Samuel Wheeler via B4 Relay
@ 2026-11-12 2:54 ` Samuel Wheeler via B4 Relay
1 sibling, 0 replies; 3+ messages in thread
From: Samuel Wheeler via B4 Relay @ 2026-11-12 2:54 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Shang En Sim, Samuel Wheeler
From: Samuel Wheeler <swheel33@gmail.com>
The HP OmniBook Ultra Laptop 14-kd0xxx (board 8EB4) implements the same
battery charge mode interface as the Spectre x360 boards supported since
commit 929433336e0a ("platform/x86: hp-wmi: add charge_behaviour support
for Spectre 8C15/8C17").
Reading HPWMI_BATTERY_CHARGE_MODE returns the mode in byte 0
(00 ff 01 ff with automatic charging). The write handler (SBCC in the
SSDT that defines \_SB.WMID) takes the mode from byte 1, accepts values
0-7 and passes it to EC command 0xbb. That matches the layout the driver
already uses.
Add the board to hp_wmi_charge_control_quirks.
Tested on the OmniBook Ultra 14-kd0xxx (BIOS F.06) with AC connected:
writing inhibit-charge to charge_behaviour changes the battery status to
"Not charging" with zero current, and writing auto resumes charging.
force-discharge was not tested.
This patch was prepared with an AI coding assistant (Claude, by
Anthropic). It read the firmware's WMI methods, wrote the change and this
description, and ran the tests on my laptop under my direction. I
reviewed the change and the test results.
Signed-off-by: Samuel Wheeler <swheel33@gmail.com>
---
drivers/platform/x86/hp/hp-wmi.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
index 46c9a5a532ba..bf68a1c46c03 100644
--- a/drivers/platform/x86/hp/hp-wmi.c
+++ b/drivers/platform/x86/hp/hp-wmi.c
@@ -634,6 +634,13 @@ static const struct dmi_system_id hp_wmi_charge_control_quirks[] __initconst = {
DMI_MATCH(DMI_BOARD_NAME, "8C15"),
},
},
+ {
+ /* HP OmniBook Ultra Laptop 14-kd0xxx */
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
+ DMI_MATCH(DMI_BOARD_NAME, "8EB4"),
+ },
+ },
{}
};
#endif
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-12 2:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-12 2:54 [PATCH 0/2] platform/x86: hp-wmi: HP OmniBook Ultra 14-kd0xxx (8EB4) fixes Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 1/2] platform/x86: hp-wmi: Only use the low byte of the thermal profile Samuel Wheeler via B4 Relay
2026-11-12 2:54 ` [PATCH 2/2] platform/x86: hp-wmi: Add charge_behaviour quirk for OmniBook Ultra 14 Samuel Wheeler via B4 Relay
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®