From nobody Wed Aug 5 07:44:46 2026 Received: from mail-dl1-f53.google.com (mail-dl1-f53.google.com [74.125.82.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9CEA4395AE2 for ; Thu, 11 Jun 2026 22:39:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781217567; cv=none; b=QPnUIeGuF/1wAvSffkjr+/027TRIlap3yZO0yM8/GJxgWjWRt1cAXpKYAK5Yu/BqC/Jm6uv8s4BG1NYj5sMs1ufdgsm0a7Hnqy5X1ZLlZVKQLq8JgBpvj1ShG8zUlbUKdPCWSgL4KhV4uU2Nxuk4gNN/2dk1+OwAi0BheZwUvNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781217567; c=relaxed/simple; bh=i6MFtNvxolieN4lk5VN/96A2bl1Y4HNUU5VxSOuv454=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MQEO2GgSM35NTQgSa4pKO8Ly8d2JyYEB3D2hNtqAsbtkqk04W3kdO8cryegDuEv9wR+d0P6jQu+1tsiJYMcoQMK1Lu5Nd12HwQ/w8qOpCfDDrUBvZGP35bpBhfek/dG9bT6JHCmmAqTzPFEUCnbMWjkqXLwzJK9BUJkzW342rYU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h4D0rS3x; arc=none smtp.client-ip=74.125.82.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h4D0rS3x" Received: by mail-dl1-f53.google.com with SMTP id a92af1059eb24-137d464c47eso861979c88.1 for ; Thu, 11 Jun 2026 15:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781217565; x=1781822365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pIOz3zm+RSFHd4HOq3rk3uZ1Gb4SoU/OadQL7cr2so8=; b=h4D0rS3xg9iY2KpgcVgkia5/oo+8Yr1G32yO9+s7r92HLP/16PxyEO8nxErMf3lyIh hhbTZ6iehikZgqFT97DYN4YpJfZ0zXJxZ5Fp7Usf88ChPlPbVBYONMBMNCI9IwvFCO+j WsVgq8JUDWffwJp/9wB1WBdU34nDNrkPhbXhLAZ/+ZXCSb12z49wRd9qcs2vPimjGtI/ titeF5FZY018SehD1czyWOe252Z8O2U8pOjWiidqkp1qNNbWFGWMEgdZJbtvMpLHx/h6 DV4yfpBYCFlnBVDrFUPqIjF2/Z8Hv2oBU/6lnAPhBf4H74c9oYkZZ5yGbxh5L4nQgJZJ f6SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781217565; x=1781822365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pIOz3zm+RSFHd4HOq3rk3uZ1Gb4SoU/OadQL7cr2so8=; b=CKC1Zui4fb3G0N6xDhUMCSj+c2G8+5q3sMTHu84YwaXvf4vz8Si/28kN0Qw4Dc9NBe Z4b23CZFGpaBCbmLVRgxScD6baT4HC6Rz0zfiy4SPs+6ul8/cXM2TViI1U15RlD70G3g zGSme4itFX84rBuVefTd0RNfMHFOasu5EKUHbJxZ3xKHafXM1UK58KKoo3yy3WFvyt0z twuLG/eT/qaiM2hHyzwX/j0EVPaKZV+HQwPRld0uDeRkYy85SuSln10unABkxi11NUVE wSm9AxuTUEFzKTBx+BobS/j25hl2sm6HHkSuPg+Bvr0uUHZOSOIwFTpz5G63wbOR6wL1 VAzg== X-Forwarded-Encrypted: i=1; AFNElJ9TzhB8YLmA1ErWto7MHqVISzacJ+LezaYvMn4bR3lE7EVYV2QDMj+7xTIMM49pp5T7e3YvykrlfReBhf0=@vger.kernel.org X-Gm-Message-State: AOJu0YxYr8kDyZ6cGMGWxLMgBye3W10tPeDYu17+bEfyybrYK8ed3tGJ VSSADIwR4ayFBgTzZFtrkvR+g7tQ/lnIWw7nj6FpKNZKRniG7hBsqyyV X-Gm-Gg: Acq92OEueT/hhXrljYe2i/fCqFPg3KIk4w7Qjw4cpuL1ZXqRy33HtxEh9XzpbINg9x3 ckKLUpiIO/jMZmL0sstG5Yg7sqJtkuS4fHBCdwPEDHxFyUwSKWZqBBTXAT4Mt9hS6iKnjenGIMJ WGBddoyt7dbNnuyTYZRWgDBVDAHyyLeuMtn6dKPhr3kTQ3KZgBA4H75O1Dsn47QPbHHzh7N82Xs PoyQ4hYUBBGlAfsNoK6eYDK0jHI4V+rFLE4Ppld8h63+mWPqfOJaAa/4VZDdv9Emj9moeAtoX5p yz3LmoC2NTRJ7c+KGOrZTenyba7NLYRCY1PJgE7UdytK43NNoSxsbvQAundSt/404RKd3kUtxi1 HygHa+JAnvtMN3lLSI2R3EzS19zp+x2MqxNxu/Yj4E/DfbVPm6UIPrw5hH+XJ/Xgi6uIfAzJvrn zpK+XFLFdAtlFj3v5395K84REYhyte2Pz23GqyS2gipfv6nQrgBspEacUqra4VK1ZN7UGDtORgK 0zW X-Received: by 2002:a05:7022:485:b0:136:c2fa:32d6 with SMTP id a92af1059eb24-1384bffb32amr10275c88.7.1781217564602; Thu, 11 Jun 2026 15:39:24 -0700 (PDT) Received: from lappy (108-228-232-20.lightspeed.sndgca.sbcglobal.net. [108.228.232.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1384b975e55sm241273c88.13.2026.06.11.15.39.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 15:39:24 -0700 (PDT) From: "Derek J. Clark" To: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Hans de Goede Cc: Armin Wolf , "Derek J . Clark" , "Pierre-Loup A . Griffais" , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] platform/x86: msi-wmi: Reformat msi_wmi_notify() Date: Thu, 11 Jun 2026 22:39:19 +0000 Message-ID: <20260611223920.1679438-2-derekjohn.clark@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260611223920.1679438-1-derekjohn.clark@gmail.com> References: <20260611223920.1679438-1-derekjohn.clark@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reformats msi_wmi_notify() to use a switch statement that reduces nesting and prepares the function to support additional ACPI types. Signed-off-by: Derek J. Clark --- drivers/platform/x86/msi-wmi.c | 71 +++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c index 4a7ac85c4db4..d00ced756581 100644 --- a/drivers/platform/x86/msi-wmi.c +++ b/drivers/platform/x86/msi-wmi.c @@ -172,44 +172,51 @@ static const struct backlight_ops msi_backlight_ops = =3D { =20 static void msi_wmi_notify(union acpi_object *obj, void *context) { - struct key_entry *key; + struct key_entry *key =3D NULL; + int eventcode =3D 0; =20 - if (obj && obj->type =3D=3D ACPI_TYPE_INTEGER) { - int eventcode =3D obj->integer.value; + if (!obj) + return; + + switch (obj->type) { + case ACPI_TYPE_INTEGER: + eventcode =3D obj->integer.value; pr_debug("Eventcode: 0x%x\n", eventcode); - key =3D sparse_keymap_entry_from_scancode(msi_wmi_input_dev, - eventcode); - if (!key) { - pr_info("Unknown key pressed - %x\n", eventcode); + break; + default: + pr_info("Unknown event received\n"); + return; + } + + key =3D sparse_keymap_entry_from_scancode(msi_wmi_input_dev, eventcode); + + if (!key) { + pr_info("Unknown key pressed - 0x%x\n", eventcode); + return; + } + + if (event_wmi->quirk_last_pressed) { + ktime_t cur =3D ktime_get_real(); + ktime_t diff =3D ktime_sub(cur, last_pressed); + /* Ignore event if any event happened in a 50 ms + * timeframe -> Key press may result in 10-20 GPEs + */ + if (ktime_to_us(diff) < 1000 * 50) { + pr_debug("Suppressed key event 0x%X - Last press was %lld us ago\n", + key->code, ktime_to_us(diff)); return; } + last_pressed =3D cur; + } =20 - if (event_wmi->quirk_last_pressed) { - ktime_t cur =3D ktime_get_real(); - ktime_t diff =3D ktime_sub(cur, last_pressed); - /* Ignore event if any event happened in a 50 ms - timeframe -> Key press may result in 10-20 GPEs */ - if (ktime_to_us(diff) < 1000 * 50) { - pr_debug("Suppressed key event 0x%X - " - "Last press was %lld us ago\n", - key->code, ktime_to_us(diff)); - return; - } - last_pressed =3D cur; - } + /* Brightness is served via acpi video driver */ + if (key->type =3D=3D KE_KEY && + (backlight || (key->code =3D=3D MSI_KEY_BRIGHTNESSUP || + key->code =3D=3D MSI_KEY_BRIGHTNESSDOWN))) + return; =20 - if (key->type =3D=3D KE_KEY && - /* Brightness is served via acpi video driver */ - (backlight || - (key->code !=3D MSI_KEY_BRIGHTNESSUP && - key->code !=3D MSI_KEY_BRIGHTNESSDOWN))) { - pr_debug("Send key: 0x%X - Input layer keycode: %d\n", - key->code, key->keycode); - sparse_keymap_report_entry(msi_wmi_input_dev, key, 1, - true); - } - } else - pr_info("Unknown event received\n"); + pr_debug("Send key: 0x%X - Input layer keycode: %d\n", key->code, key->ke= ycode); + sparse_keymap_report_entry(msi_wmi_input_dev, key, 1, true); } =20 static int __init msi_wmi_backlight_setup(void) --=20 2.54.0 From nobody Wed Aug 5 07:44:46 2026 Received: from mail-dy1-f172.google.com (mail-dy1-f172.google.com [74.125.82.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B71139446D for ; Thu, 11 Jun 2026 22:39:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781217572; cv=none; b=JPCCPJgYqdIQAZa6K2zOTU67anxg3fqAW0llkdwR7wtCx6OLwsD4Cyb80Osznj1PpB9Cww67ndRaJx4vPUQ1Tvga4g6Kju+RvEWKfTJUVvmqmSolzpKCg7zvbwZg1VAPDXSGAKkKL5Q34m/mgpT6e7x2BZgs0FA3X+OWy/xgPiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781217572; c=relaxed/simple; bh=+8SUOc1xcRQSb75id7WbryItASP1S+IATD316tnttZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JuapOveY7+zD2zBQwTPmjq0HJF54u6GRSdEbIylyRd12VqDIR02L1FU5KoXK4GPzSIdV5fwL02IJBvCz2aMS4JRhPiPFIasnHUgY2mOgg7ZQV2XmBC0lnNhpc4hBa9msm/Z7wM2RC/AoBEKX18yMulB0mlx78ysJpVB4vvRRr1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I736Ii8u; arc=none smtp.client-ip=74.125.82.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I736Ii8u" Received: by mail-dy1-f172.google.com with SMTP id 5a478bee46e88-304f590dd91so514340eec.0 for ; Thu, 11 Jun 2026 15:39:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781217565; x=1781822365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x2LEHkho1IVVqEh+6wm7OHzKCMmqVyEcGJJkJ19GMe4=; b=I736Ii8u2rQqT5fXlmQVsegbKj0vrUyHQ2LqdkIzkGo0Nxu7qBKUd/sWQSI+2TzZJo FTFepuSM3ja3HNvrD2i+Wr6ePHUCjPxcXKvTCcKp0zvs0autewgAKwqsNksrQCKOmvNm 2qq9ILnE9OFGP6Q2SmihKvONarcxvX/DBGeUxs9jiL+K36ZKjnPpsCjTSy41Uuo10jnn f9zwezccM55unRW/eTP86sISdPw0puZOmGZMn+6l4hhS1gdzN7fIfemURgQVJfk4cdH/ nKFx8mX7Q/7sohTBh0g5BDIOGX9iU98ojaHUNYKvnZMjia0tAwKODuJ6/wrVXCxZYq99 gj/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781217565; x=1781822365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=x2LEHkho1IVVqEh+6wm7OHzKCMmqVyEcGJJkJ19GMe4=; b=m33egCndqKrVTa1LyaV3LVTUovi0AqHJ5FfXpkiwNpWeDYzHry8gnQn4E8oiH/Usuh mtU1T3o3iRM2E1FKTVSNd8bjEeTfYVAIZrTv6jOpHh43wJ2Y3F89lzEg584/9B/9ck+C IaNCBBENAe4AdKHbFIoGQozFtFXebDpF4rt+SCS7+LIPfhkZZ0TdWzZj0HBoxgtiuCSG 6ieGLvPeD5DNhLVekWQXJUqQnLwJiWWXYL3HHLOXL3AnvrO2ZEz/Jd/TsrjPpzZuOM1O q2pEUmwvxOMI5VMmt/AEUH4E/7swiz7Nq2rJcax0YOSh8jyT2x+oU9gV3v4xDycVMI/W Ug9g== X-Forwarded-Encrypted: i=1; AFNElJ+/gRGchXtDOP22ecLKaEg1ZkGsgHsVM7OVPuoKiiAVwNXWeRAVZ8x7LcAx81FhdtQn4s3EjoLa12oF+Ek=@vger.kernel.org X-Gm-Message-State: AOJu0YzeWMJzp0JQFhZ0lz5OSGVU4+GlpBfkzdtpn6WZmUD+6Glumj+e j9AT0/kz8mlVJfT7JyjqcG8DeNNz1KBnAWG/twJOhlZGdo9tb11ESPg4 X-Gm-Gg: Acq92OErx4fLFj9Qgef6779wexL2GcKjpNzkPzXiOwg21xrpCoGgkRXH4XEYQagFlVG CwdvlakzO5c2PMIe+pI3jAlKC4D8NZgRF0cRHk3AidHrLQ0uWVKa6TyqavWA72DcbskYPgTxDIX mV8uZUbury8uGMXPHHPAMQ+RhT/H7pZsiBKvALo46zlLLDj/eeB7vtWGO+efwn8Oa1IfvbBzgDn /2pAgpRKbXl5zJoAhLeBRoKFCtYcIr6FaTBpZ5kDUejrwsHR0gTnp7nTLB4hya2Hkx6K2MegzC0 bozjhPAkdNWDwseB8bL1hcLatz1TpDHIvmMHlBglUm/V3Gnb8DUrmT7ypVjcJMId7PnECBlIeTw 8f9vz+NE95ArjOmjbDXjC0/G4RKFWVvvanHqmVrY4BpzjKdr3oj1bA9Dfnst03sABe5u51Wv54Y KcLd4FdpcG9LHIc2TR8ywQuizVChtR/HugmBauDKZGnSWjMzR2jTLPosLLkZL1be+V3fxz/5jgZ hn1 X-Received: by 2002:a05:7300:578f:b0:304:562c:2338 with SMTP id 5a478bee46e88-3081ff75a80mr208849eec.14.1781217565400; Thu, 11 Jun 2026 15:39:25 -0700 (PDT) Received: from lappy (108-228-232-20.lightspeed.sndgca.sbcglobal.net. [108.228.232.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1384b975e55sm241273c88.13.2026.06.11.15.39.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 15:39:25 -0700 (PDT) From: "Derek J. Clark" To: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Hans de Goede Cc: Armin Wolf , "Derek J . Clark" , "Pierre-Loup A . Griffais" , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] platform/x86: msi-wmi: Add MSI Claw M-Center keys Date: Thu, 11 Jun 2026 22:39:20 +0000 Message-ID: <20260611223920.1679438-3-derekjohn.clark@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260611223920.1679438-1-derekjohn.clark@gmail.com> References: <20260611223920.1679438-1-derekjohn.clark@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" MSI Claw devices produce WMI events through the MSI WMI hotkeys GUID for some of their buttons. When pressed, these cause spam in the kernel. For the majority of devices these events can be safely ignored as they are duplicated by the AT Translated Set 2 Keyboard device exposed as an evdev. For the MSI Claw A8 BZ2EM model's M-Center Menu button (left of the screen) there is no associated keyboard event, so this event must be exposed. Map this button to the same scancode produced by the AT Keyboard device on other models. This does cause double F15 events on the A1M, 7 AI+ A2VM, and 8 AI+ A2VM, but it appears to be harmless in my testing. Signed-off-by: Derek J. Clark --- drivers/platform/x86/msi-wmi.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c index d00ced756581..73a4f0d2dc04 100644 --- a/drivers/platform/x86/msi-wmi.c +++ b/drivers/platform/x86/msi-wmi.c @@ -46,6 +46,12 @@ enum msi_scancodes { WIND_KEY_WLAN =3D 0x5f, /* Fn+F11 Wi-Fi toggle */ WIND_KEY_TURBO, /* Fn+F10 turbo mode toggle */ WIND_KEY_ECO =3D 0x69, /* Fn+F10 ECO mode toggle */ + /* MSI Claw keys */ + CLAW_KEY_VOLUMEDOWN =3D 0x21, + CLAW_KEY_CENTER =3D 0x29, /* MSI M-Center main menu */ + CLAW_KEY_QUICK_LONG =3D 0x2a, /* MSI M-Center quick access long hold */ + CLAW_KEY_VOLUMEUP =3D 0x32, + CLAW_KEY_QUICK_SHORT =3D 0x58, /* MSI M-Center quick access short press */ }; static struct key_entry msi_wmi_keymap[] =3D { { KE_KEY, MSI_KEY_BRIGHTNESSUP, {KEY_BRIGHTNESSUP} }, @@ -69,6 +75,15 @@ static struct key_entry msi_wmi_keymap[] =3D { { KE_KEY, WIND_KEY_TURBO, {KEY_PROG1} }, { KE_KEY, WIND_KEY_ECO, {KEY_PROG2} }, =20 + /* These are MSI Claw keys, used for MSI M-Center in Windows */ + { KE_KEY, CLAW_KEY_CENTER, {KEY_F15} }, + + /* These MSI Claw keys work without WMI. Ignore them to avoid double keyc= odes */ + { KE_IGNORE, CLAW_KEY_QUICK_SHORT }, + { KE_IGNORE, CLAW_KEY_QUICK_LONG }, + { KE_IGNORE, CLAW_KEY_VOLUMEUP }, + { KE_IGNORE, CLAW_KEY_VOLUMEDOWN }, + { KE_END, 0 } }; =20 @@ -183,6 +198,13 @@ static void msi_wmi_notify(union acpi_object *obj, voi= d *context) eventcode =3D obj->integer.value; pr_debug("Eventcode: 0x%x\n", eventcode); break; + case ACPI_TYPE_BUFFER: + if (!obj->buffer.length) + return; + + eventcode =3D obj->buffer.pointer[0]; + pr_debug("Eventcode: 0x%x\n", eventcode); + break; default: pr_info("Unknown event received\n"); return; --=20 2.54.0