mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: wolf109909 <wolf109909@foxmail.com>
To: platform-driver-x86@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	"Mingyou Chen" <qby140326@gmail.com>,
	"Armin Wolf" <W_Armin@gmx.de>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Nabil Danial" <nabildanial.93@gmail.com>,
	"Yuming Sun" <wolf109909@foxmail.com>
Subject: [PATCH 0/5] platform/x86: bitland-mifs-wmi: MIFS v2 firmware support (Xiaomi Book Pro 14 2026)
Date: Wed, 29 Jul 2026 01:53:36 +0800	[thread overview]
Message-ID: <tencent_FCC6CDAEB2E4FF0272905D423D2CB0F5970A@qq.com> (raw)

From: Yuming Sun <wolf109909@foxmail.com>

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


                 reply	other threads:[~2026-07-28 17:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=tencent_FCC6CDAEB2E4FF0272905D423D2CB0F5970A@qq.com \
    --to=wolf109909@foxmail.com \
    --cc=W_Armin@gmx.de \
    --cc=hdegoede@redhat.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nabildanial.93@gmail.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=qby140326@gmail.com \
    /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 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®