[RESEND PATCH 0/5] platform/x86: bitland-mifs-wmi: MIFS v2 firmware support (Xiaomi Book Pro 14 2026)

From: 孙 誉铭

Date: Tue Jul 28 2026 - 15:20:16 EST


Resending: the foxmail envelope rewrite (tencent...@xxxxxx) appears to
have gotten the first attempt filtered. No content changes.

This series makes the Bitland MIFS WMI driver work on the Xiaomi Book
Pro 14 2026 (Intel Panther Lake, Ultra 5 358H) and very likely on the
REDMI Book Pro 14 2025, whose suspend failure was reported earlier [1].

These machines ship a reduced MIFS firmware ("v2"): the WMAA method
implements only function groups 0x0800/0x0a00/0x0c00/0x1000, reports
the performance mode as raw QFAN EC codes {2,3,4,9,10} instead of the
v1 0..3 enumeration, and exposes no WMI fan function. Additionally the
firmware never defines ECON, so \_SB.PC00.LPCB.Q_EC._STA fails and the
ACPI EC driver never binds, which kills all EC query handlers
(including the lid switch notifications _Q0C/_Q0D).

Symptoms fixed by this series, all reproduced and verified on the
affected machine:

* Suspend/hibernate aborted with -EINVAL from the driver's suspend
hook (same failure as [1]: "dpm_run_callback():
bitland_mifs_wmi_suspend returns -22"; 242 failures counted in
suspend_stats). Patch 1 makes the WMI call validate the firmware
status word and the suspend/resume hooks fault-tolerant.

* power-profiles-daemon could not read or set the platform profile
("Failed to get profile for handler bitland-mifs-wmi"; selecting
"performance" failed outright and wedged the daemon). Patch 2
detects the v2 firmware variant at probe and maps the QFAN codes
(2=quiet, 3=balanced, 4=speed, 9/10=extreme).

* The hwmon device reported zero RPM on all channels because the v2
firmware has no WMI fan function. Patch 3 reads the two fan
tachometers (u16 RPM, 0 = stopped) from the EC shared-memory window
at 0xFE0B0300 (DSDT region "ERAM", offsets 0x69/0x6B).

* Closing the lid produced no SW_LID event (screen stayed on, keys
pressed by the closed lid typed into the visible lock screen,
locking the account). Patch 4 polls the LSTE lid bit in the EC
window and, on a change, evaluates the very AML methods the EC
query would have run (_Q0C/_Q0D), restoring proper lid events.
DMI-gated to the affected model.

All values were reverse-engineered from the machine's DSDT/SSDT
(WMID device, _UID "MIFS") and verified live: mode switching changes
the EC QFAN register as expected, fan tachs ramp 0 -> ~2700 RPM under
load, lid close/open emit proper switch events consumed by
systemd-logind, and suspend/resume cycles complete cleanly with the
driver loaded (suspend_stats: fail 0).

Notes for reviewers:

* The v2 variant is detected at runtime (perf-mode query result
outside the v1 enumeration) so other Bitland machines sharing this
firmware generation get support without DMI entries; the lid quirk
additionally requires a DMI match.
* On this platform the firmware perf-mode switch reaches Intel DTT
(\_SB.IETM, INTC10D4) via ODV variables; mainline has no driver for
that device, so the TDP change the firmware intends is currently
not applied on Linux. Programming RAPL directly from this driver
seemed inappropriate; I left it out. Happy to hear preferences.
* Interactions with the in-flight "Merge redmi-wmi into
bitland-mifs-wmi" series [2] are limited to file context; the
control-device paths touched here are disjoint from the event-device
merge.

[1] https://lists.openwall.net/linux-kernel/2026/07/10/72
"[BUG] platform/x86: bitland-mifs-wmi: Hibernation fails with
error -22 on Xiaomi Redmi Book Pro 14 2025"
[2] https://www.spinics.net/lists/kernel/msg6309086.html
"[PATCH v1 0/4] Merge redmi-wmi into bitland-mifs-wmi"


Yuming Sun (5):
platform/x86: bitland-mifs-wmi: validate WMAA status, never abort
suspend
platform/x86: bitland-mifs-wmi: support MIFS v2 perf-mode mapping
platform/x86: bitland-mifs-wmi: read fan tach from EC window on MIFS
v2
platform/x86: bitland-mifs-wmi: drive lid switch via EC poll on Xiaomi
Book Pro 14
Documentation: wmi: bitland-mifs-wmi: document MIFS v2 firmware
variant

.../wmi/devices/bitland-mifs-wmi.rst | 26 ++
drivers/platform/x86/bitland-mifs-wmi.c | 272 +++++++++++++++++-
2 files changed, 290 insertions(+), 8 deletions(-)

--
2.55.0