From: Mingyou Chen <qby140326@gmail.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Hans de Goede" <hansg@kernel.org>,
"Ilya Gladyshev" <ilya.gladyshev@linux.dev>
Cc: KentoNion <kento@kekto.ru>,
platform-driver-x86@vger.kernel.org,
"ted eric" <ericted8810@gmail.com>, "Armin Wolf" <W_Armin@gmx.de>,
linux-kernel@vger.kernel.org, "Chris Taraszka" <chris@miget.com>,
"Matias Civadda" <matias.civadda2342001@gmail.com>,
"高 俊文" <btx342@gmail.com>, powerfullz <wleizc7319@gmail.com>,
"孙 誉铭" <wolf109909@outlook.com>,
"Miloš Vlku" <vlku.milos.fun@gmail.com>, Rsplwe <i@rsplwe.com>,
"Bozhen Peng" <bozhenpeng93@gmail.com>,
"Anton Karasev" <uselessfire@gmail.com>,
"Jame Jao" <jaojame6@gmail.com>,
"Serhiy Shliapuhin" <shlyapugin@gmail.com>,
"Mingyou Chen" <qby140326@gmail.com>
Subject: [PATCH v13 0/7] Merge redmi-wmi into bitland-mifs-wmi
Date: Wed, 21 Oct 2026 20:34:07 +0800 [thread overview]
Message-ID: <20261021123414.25516-1-qby140326@gmail.com> (raw)
This patch series consolidates the standalone 'redmi-wmi' driver into the
'bitland-mifs-wmi' driver to eliminate code duplication and centralize
the maintenance of overlapping ACPI WMI event streams.
Bitland is the ODM manufacturer for various Xiaomi Redmibook models. Both
platforms share the exact same keyboard event stream WMI GUID
(46C93E13-EE9B-4262-8488-563BCA757FEF). While redmi-wmi previously parsed
the 4-byte payload as a bulk u32 scancode, bitland-mifs-wmi deconstructed
it into discrete type/id/value fields.
Redmi operations were not contained in this patch series, future reverse
engineering is required.
This series introduce a newly reported mic-mute hotkey definition
for Redmibooks, dropped the previous redmi-wmi driver and intrudoced
the quirks table for the bitland-mifs-wmi driver.
I don't have a Redmi or other Bitland device. So I cannot work on the
real device.
Features are working properly on my device (Lecoo Bellator N176).
I leave the future reverse engineering work to the community.
Tests are welcome.
And by the way, the no_set member in bitland_profile_entry means a
platform profile is only report by the firmware but not available for
set.
Does accept_zero_function still necessary since the driver now permits
0x0 function field on SET operations?
And I've got a question, from sashiko's comment in my v12
https://sashiko.dev/#/patchset/20261012133648.132363-1-qby140326%40gmail.com
> Will this result in the loss of KEY_PERFORMANCE events on event-only legacy
> devices?
> Looking at bitland_mifs_wmi_probe() in drivers/platform/x86/bitland-mifs-wmi.c,
> if dev_type == BITLAND_WMI_EVENT, it returns early after registering the input
> device:
> if (dev_type == BITLAND_WMI_EVENT) {
> /* Register input device for hotkeys */
> drv_data->input_dev = devm_input_allocate_device(&wdev->dev);
> ...
> return input_register_device(drv_data->input_dev);
> }
> When the performance key is pressed, bitland_mifs_wmi_notify() intercepts it,
> invokes the bitland_notifier_list, and returns without reporting an input event:
> case WMI_EVENT_PERFORMANCE_PLAN:
> case WMI_EVENT_PERFORMANCE_PLAN_ALT:
> blocking_notifier_call_chain(&bitland_notifier_list,
> BITLAND_NOTIFY_PLATFORM_PROFILE,
> NULL);
> return;
> Because the platform profile and notifier were not registered during probe
> for event-only devices, does this mean the events are silently dropped instead
> of emitting KEY_PERFORMANCE like the old driver did?
I ackknowledged that KEY_PERFORMANCE (WMI_EVENT_PERFORMANCE_PLAN_ALT in
bitland-mifs-wmi) looks like an event in this LKML thread
> Since the event reports a change that has already happened,
> platform_profile_notify() is the natural way to pass it on, as
> suggested in my v6 reply: power-profiles-daemon then re-reads the
> profile, which is harmless after the driver's own writes too. If
> KEY_PERFORMANCE should stay for on-screen displays (Ibragim asked to
> keep these events observable), it may be worth not reporting it for the
> event that echoes the driver's own write, or at least saying in a
> comment that it reports a mode change that already happened. On
> Ibragim's TM2209 the profile SET is reported not to work [3], so there
> 0x16 can only come from Fn+K and the echo does not exist; Ibragim, can
> you confirm?
https://lore.kernel.org/all/20261008152647.1510152-1-uselessfire@gmail.com/
So should I follow sashiko's advice?
v13:
Fix the zero function value problem find on my device
Fix the memcpy size issue
Remove WMI_EVENT_PERFORMANCE_PLAN_ALT in the keymap
Select BITLAND_MIFS_WMI and deprecate REDMI_WMI instead remove the
config entry
v12:
Fix the issues mentioned in https://lore.kernel.org/all/20261008152647.1510152-1-uselessfire@gmail.com/ .
Copy payload_data to output->data at bitland_mifs_wmi_call, not
overwrite the entire struct.
Correct the key name (Mic Mute) in the commit message of
"platform/x86: bitland-mifs-wmi: Add Redmi mic-mute key entries"
and my device doesn't have a FN-ESC key, so I renamed the enum variant to
WMI_EVENT_MIC_MUTE.
v11:
Add missing return_code_at_end and accept_zero_function logic
Fallback to balanced platform profile if resume to performance failed
v10:
Replace the previous "profile table" with dmi quirk table
v9:
Add the missing feature introduced in the commit
e0d6312578e1 ("platform/x86: redmi-wmi: report EC state change events").
v8:
Correct Ilya Gladyshev's email address in the MAINTAINERS entry
v7:
Swap low bit and high bit for WMI_EVENT_KBD_BRIGHTNESS
in bitland_mifs_wmi_keymap
0x00800501 -> BI_HOTKEY_CODE(WMI_EVENT_KBD_BRIGHTNESS, 0x80, 0),
Report KEY_FN_ESC when WMI_EVENT_FNLOCK_STATE events received
Rename the reserved names
Use Xmas tree order in bitland_mifs_wmi_notify
Collect the Tested-by and Reviewed-by tags
v6:
Drop the wrong Redmi ops
v5:
Correct Xiaomi DMI vendor name
v4:
Map PLATFORM_PROFILE_PERFORMANCE to wmi performance mode if the device
doesn't support full-speed mode.
Mingyou Chen (7):
MAINTAINERS: Add maintainer entry of bitland-mifs-wmi driver
platform/x86: bitland-mifs-wmi: Merge the function of redmi-wmi into
the bitland driver
platform/x86: bitland-mifs-wmi: Add Redmi mic-mute key entries
platform/x86: redmi-wmi: Drop redmi-wmi driver
platform/x86: bitland-mifs-wmi: Add quirks table
platform/x86: bitland-mifs-wmi: Fallback to balanced platform profile
if last performance profile is not available
platform/x86: bitland-mifs-wmi: Permit zero on SET functions
MAINTAINERS | 7 +-
drivers/platform/x86/Kconfig | 11 +-
drivers/platform/x86/Makefile | 1 -
drivers/platform/x86/bitland-mifs-wmi.c | 357 +++++++++++++++++-------
drivers/platform/x86/redmi-wmi.c | 154 ----------
5 files changed, 259 insertions(+), 271 deletions(-)
delete mode 100644 drivers/platform/x86/redmi-wmi.c
base-commit: 893018d51f27ec0449155b0afe371aaf65380630
--
2.56.0
next reply other threads:[~2026-10-21 12:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 12:34 Mingyou Chen [this message]
2026-10-21 12:34 ` [PATCH v13 1/7] MAINTAINERS: Add maintainer entry of bitland-mifs-wmi driver Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 2/7] platform/x86: bitland-mifs-wmi: Merge the function of redmi-wmi into the bitland driver Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 3/7] platform/x86: bitland-mifs-wmi: Add Redmi mic-mute key entries Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 4/7] platform/x86: redmi-wmi: Drop redmi-wmi driver Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 5/7] platform/x86: bitland-mifs-wmi: Add quirks table Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 6/7] platform/x86: bitland-mifs-wmi: Fallback to balanced platform profile if last performance profile is not available Mingyou Chen
2026-10-21 12:34 ` [PATCH v13 7/7] platform/x86: bitland-mifs-wmi: Permit zero on SET functions Mingyou Chen
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=20261021123414.25516-1-qby140326@gmail.com \
--to=qby140326@gmail.com \
--cc=W_Armin@gmx.de \
--cc=bozhenpeng93@gmail.com \
--cc=btx342@gmail.com \
--cc=chris@miget.com \
--cc=ericted8810@gmail.com \
--cc=hansg@kernel.org \
--cc=i@rsplwe.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=ilya.gladyshev@linux.dev \
--cc=jaojame6@gmail.com \
--cc=kento@kekto.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=matias.civadda2342001@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=shlyapugin@gmail.com \
--cc=uselessfire@gmail.com \
--cc=vlku.milos.fun@gmail.com \
--cc=wleizc7319@gmail.com \
--cc=wolf109909@outlook.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®