From: Mingyou Chen <qby140326@gmail.com>
To: "Chris Taraszka" <chris@miget.com>,
"Hans de Goede" <hansg@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org,
Ilya Gladyshev <ilya.gladyshev@linux.dev>,
Armin Wolf <W_Armin@gmx.de>, KentoNion <kento@kekto.ru>,
Matias Civadda <matias.civadda2342001@gmail.com>,
7z0423arsenova <7z0423arsenova@proton.me>
Subject: Re: [PATCH v3 4/4] platform/x86: bitland-mifs-wmi: Cycle the platform profile on Fn+K
Date: Mon, 2 Nov 2026 19:10:26 +0800 [thread overview]
Message-ID: <59fe5a60-049f-4e53-bd75-e7b2de3717bd@gmail.com> (raw)
In-Reply-To: <20261101161814.1325847-5-chris@miget.com>
On 11/2/26 00:18, Chris Taraszka wrote:
> On the Xiaomi Book Pro 14 (TM2424), Fn+K sends hotkey event 0x28 and
> the firmware does not change SystemPerMode itself. The event is a
> request that the vendor software acts on; without that software Fn+K
> does nothing on Windows either, and on Linux it is currently logged as
> an unknown event.
>
> Add a quirk for this and call platform_profile_cycle() from the control
> device when the event arrives, so Fn+K cycles through the profiles that
> all platform profile handlers support. Models without the quirk keep
> ignoring the event.
>
> Suggested-by: Hans de Goede <hansg@kernel.org>
> Signed-off-by: Chris Taraszka <chris@miget.com>
> ---
>
> Notes:
> Sent on its own earlier today [1]. It is now part of the series since
> it changes the TM2424 quirks entry from patch 1. Retested with v3: three
> Fn+K presses from balanced step performance (0x04) -> low-power (0x02)
> -> balanced (0x09).
>
> [1] https://lore.kernel.org/all/20261101144100.1043263-1-chris@miget.com/
>
> drivers/platform/x86/bitland-mifs-wmi.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/platform/x86/bitland-mifs-wmi.c b/drivers/platform/x86/bitland-mifs-wmi.c
> index 4d02cd9e8a6b..84d1223d0ec6 100644
> --- a/drivers/platform/x86/bitland-mifs-wmi.c
> +++ b/drivers/platform/x86/bitland-mifs-wmi.c
> @@ -100,6 +100,9 @@ struct bitland_mifs_quirks {
>
> bool return_code_at_end;
> bool skip_ac_type_check;
> +
> + /* Fn+K sends WMI_EVENT_PERFORMANCE_CYCLE and leaves the mode to the OS */
> + bool cycle_profile_on_key;
> };
>
> static const struct bitland_profile_entry default_profile_entries[] = {
> @@ -126,6 +129,7 @@ static const struct bitland_mifs_quirks tm2424_quirks = {
> .profile_entries = tm2424_profile_entries,
> .num_profile_entries = ARRAY_SIZE(tm2424_profile_entries),
> .skip_ac_type_check = true,
> + .cycle_profile_on_key = true,
> };
>
> static const struct dmi_system_id bitland_mifs_dmi_table[] = {
> @@ -169,6 +173,7 @@ enum bitland_mifs_event_id {
> WMI_EVENT_MIC_MUTE = 33,
> WMI_EVENT_RESERVED_23 = 34,
> WMI_EVENT_OPEN_APP = 35,
> + WMI_EVENT_PERFORMANCE_CYCLE = 40,
> };
>
> enum bitland_mifs_event_type {
> @@ -217,6 +222,7 @@ static BLOCKING_NOTIFIER_HEAD(bitland_notifier_list);
> enum bitland_notifier_actions {
> BITLAND_NOTIFY_KBD_BRIGHTNESS,
> BITLAND_NOTIFY_PLATFORM_PROFILE,
> + BITLAND_NOTIFY_PLATFORM_PROFILE_CYCLE,
> BITLAND_NOTIFY_HWMON,
> };
>
> @@ -869,6 +875,10 @@ static int bitland_notifier_callback(struct notifier_block *nb,
> case BITLAND_NOTIFY_PLATFORM_PROFILE:
> platform_profile_notify(data_ctx->pp_dev);
> break;
> + case BITLAND_NOTIFY_PLATFORM_PROFILE_CYCLE:
> + if (data_ctx->pp_dev)
> + platform_profile_cycle();
> + break;
> case BITLAND_NOTIFY_HWMON:
> fan_info = data;
>
> @@ -1015,6 +1025,7 @@ static void bitland_mifs_wmi_report_key(struct wmi_device *wdev, u32 payload)
> static void bitland_mifs_wmi_notify(struct wmi_device *wdev,
> const struct wmi_buffer *buffer)
> {
> + struct bitland_mifs_wmi_data *data = dev_get_drvdata(&wdev->dev);
> const struct bitland_mifs_event *event = buffer->data;
> struct bitland_fan_notify_data fan_data;
> u8 brightness;
> @@ -1043,6 +1054,15 @@ static void bitland_mifs_wmi_notify(struct wmi_device *wdev,
> NULL);
> return;
>
> + case WMI_EVENT_PERFORMANCE_CYCLE:
> + if (!data->quirks->cycle_profile_on_key)
> + break;
> +
> + blocking_notifier_call_chain(&bitland_notifier_list,
> + BITLAND_NOTIFY_PLATFORM_PROFILE_CYCLE,
> + NULL);
> + return;
> +
How about 0x16 (WMI_EVENT_PERFORMANCE_PLAN_ALT)? Some devices report
this instead of 0x28 (WMI_EVENT_PERFORMANCE_CYCLE).
https://lore.kernel.org/all/BelDdF5woNEBX6dZ3_zJDEbVkifs1pdxEjtQ1yC-aKyZahijFJCllxm0l_SqZ5Hsj61D8wfJNa7uDSuNKmyyxo2S0tZp9QS5yaafeZUxvxE=@proton.me/
> /*
> * The device has 3 fans (CPU, GPU, SYS),
> * but there are only the CPU and GPU fan has events
prev parent reply other threads:[~2026-11-02 11:10 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-01 16:18 [PATCH v3 0/4] platform/x86: bitland-mifs-wmi: Xiaomi Book Pro 14 support Chris Taraszka
2026-11-01 16:18 ` [PATCH v3 1/4] platform/x86: bitland-mifs-wmi: Add Xiaomi Book Pro 14 quirk Chris Taraszka
2026-11-02 11:31 ` Mingyou Chen
2026-11-01 16:18 ` [PATCH v3 2/4] platform/x86: bitland-mifs-wmi: Don't fail suspend or resume on profile errors Chris Taraszka
2026-11-01 16:18 ` [PATCH v3 3/4] platform/x86: bitland-mifs-wmi: Support a separate profile value on battery Chris Taraszka
2026-11-01 16:18 ` [PATCH v3 4/4] platform/x86: bitland-mifs-wmi: Cycle the platform profile on Fn+K Chris Taraszka
2026-11-02 11:10 ` Mingyou Chen [this message]
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=59fe5a60-049f-4e53-bd75-e7b2de3717bd@gmail.com \
--to=qby140326@gmail.com \
--cc=7z0423arsenova@proton.me \
--cc=W_Armin@gmx.de \
--cc=chris@miget.com \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=ilya.gladyshev@linux.dev \
--cc=kento@kekto.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=matias.civadda2342001@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
/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 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.