From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f171.google.com (mail-dy1-f171.google.com [74.125.82.171]) (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 E2AEE39BFEB for ; Mon, 6 Apr 2026 20:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775506445; cv=none; b=orjw+D/3hukP/uYEKV7RAkRImXrw6CfHUb2dZ46YHriRK9+OY0TTTkAsFm9O8hWUrh6W6eGGkOePBgoCcFja3sY9RDAIAM/JTR0WZC7lb6Ytdm0PBgoqd4Oruokn8aWa1q5uoi3xhOCReEzgX+Fr+TC6ONVmtbbgTZ9unhkz14k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775506445; c=relaxed/simple; bh=MoadVnU8JCSueQpki9/KYskTj/4tTwEVm3vsZQgzXxw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=TEUItF3I9JqdONnhfiI4sf7uo4m9VL61qWVO/8z0yxk9lIZLKN2LjDm5BrvWr5DEyJ3BaXwUE1qEexiJ3PQePySFy8jc2KhHEDq4Xfl8a24b9aNlE4lZBCFx5P25uSx2OyuPom6m8UjxmL6zwpP83E1PSeqmGeZ2BAPEJn9/rtk= 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=Wb2SFfl3; arc=none smtp.client-ip=74.125.82.171 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="Wb2SFfl3" Received: by mail-dy1-f171.google.com with SMTP id 5a478bee46e88-2c156c4a9efso5197260eec.1 for ; Mon, 06 Apr 2026 13:14:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775506443; x=1776111243; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pQkihaPMpyu3T7K9nehhISvHPCChQ3LVYoxWApYtavI=; b=Wb2SFfl3PIIHfuYtsw3ViXkR89iM9Gz4UHXZw4fWHyZIKjG/o+Sgp1KZ9T9uxuq7qy DYTgRak22nJPYSX8TGG5ztYM/+6OFdSLdRr7ue431Q+EoD4EymLzSi6vdrjR8Z7TN0dP ty1FkbrgHyRGQPZbuNezN2iY5tFcgF2teUNQmJ0xWfX3j2Vic4T8IdwzJWrFdv7Ct3GK 1FIm02v2JPJ2eMgFZVgtuZQ+WhjQPTfOtozi81f7oWnQdK5vyM1Y4g6NW1IqMUu5CXip +ahzuQtLhCJHZgow4+0mmF4Hx9SLGzuQJf8ST8rFtiTAGoPyuSXSc3BHjFcgiA39HMs6 oV6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775506443; x=1776111243; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pQkihaPMpyu3T7K9nehhISvHPCChQ3LVYoxWApYtavI=; b=lnLwovngfif3VOC8wuFmMSQngO9BoIyzf2mUZNbqBLGkpcjcjZVEgR8q2YbDZCqAHZ sNzsRe8aEyxLCJAaSaG6OyqA4bR+na27Y5cDG1JoguVtBNOhLw3iPR6MTHnLZDPeVbER 0fNwd9dTR9fD/dpAdyR/t61uZiefeVKXN/JcP/5IKNR6qo+YFG96RsbNzPLM+bcYmyPi 9+vxuW2FgDwcOm6QPYzjbpsWs6ySFlyPWrAykhTxDc6buuPHhTAOsa+OyFT2DWguPUxQ 5a9Jox52iVdRXurx658MuETH7RvzDlbmF5wkuFYR7un9w5zMoRBRyqRwfnx1JCuMtLyQ If5w== X-Forwarded-Encrypted: i=1; AJvYcCVP8DurF8v91MarjV53XsjVj9DP8BSns7Zy7mR0ZQjHRvrZCc6soDDFUKymTOugNRaPECWevUE8dzrnFzE=@vger.kernel.org X-Gm-Message-State: AOJu0Yyddknf3R5K1qFVdD4b5iW1Qdyk4ZvhYSV1fU21O3qiuEJYG1MO gvZr9Y97u8j2RLRItnntH3RV5NdvL6ouuAi5XK8W4+zgcZv66LGIuOm3 X-Gm-Gg: AeBDievL69Hk8YEtqOQNHKD+tUPOdutN1NRRN0DOawJ3Z3npmNRpI5c3hFv7OiH0d7G qGJunoYms3YH3mYfPIyXght6K/Tm9VSrLl+y4AhbROIt1e7h2eji9rDNKM6+iwibGxykw7zny8v 06Xl15obmmOpk5jPjUfLdQTFPz/h3Dn5f8OaciWuRf7jZ47KkmAMU+vEJCDf5wchQa/FdQP0RTq 9WZs46ZvhTP253nL6dTtlsdMF3ajI+ZZLtVE3yTbVzKtldqnPDuW4kfu6YsHHACkUV3atKlyS7B NyUZxTay759V5foK+0szeBBef+xrV1S5Vr49v7JsjQEMwGtMezCJUj4zI/R3ZefFYJGMc6pCKrS fbZRvBiFWhQ7Qt1fEABAzn3CYMbhm2At0uE5v38LGwRBPcQFqbDZumCgyYgh8eO64InfDHVeI/g 5X+VMn5ITa5JPZweX2V7Sbt0VdpWSlsoroSY9kQh1N1XUdYkncNx8q7bC8SQ0VWOF3iIvsviYUA kBd X-Received: by 2002:a05:7022:b81:b0:12a:7f25:44fc with SMTP id a92af1059eb24-12bfb776c2cmr5464958c88.35.1775506442944; Mon, 06 Apr 2026 13:14:02 -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-12bed93f861sm17022333c88.0.2026.04.06.13.14.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Apr 2026 13:14:02 -0700 (PDT) From: "Derek J. Clark" To: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Hans de Goede Cc: Mark Pearson , Armin Wolf , Jonathan Corbet , Rong Zhang , Kurt Borja , "Derek J . Clark" , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v8 00/16] platform-x86: lenovo-wmi: Add fixes and enhancement Date: Mon, 6 Apr 2026 20:13:44 +0000 Message-ID: <20260406201400.438221-1-derekjohn.clark@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit This series adds many much needed fixes and features to the lenovo-wmi drivers. This version has been re-ordered to ensure the simplest application to the stable tree, with all fixes being pushed up front. This has caused some churn in the latter half of the series where I'm immediately changing things that were just added, but this should ensure a better result for all kernel versions so I'm happy with it. Patches 1-7 fix various bugs in the existing drivers and are Cc'd to stable. Patch 8 moves all gamezone enums from the gamezone header into the helpers header in preparation for the rest of the series. Patch 9 moves LWMI_FAN_DIV to be next to the rest of the fan attribute defines in preparation for adding additional attrbiute macros. This is so the attribute macros can all be in the same place in the file. Patch 10 adds a function to make assigning attribute ID's for capdata cleaner and easier. Patch 11 adds the remaining CPU attributes that weren't previously exposed. Patch 12 adds GPU attributes. Patch 13 renames a name constant in preparation for patch 6. Patch 14 adds battery charge-type limiting when supported only by WMI, or when a module parameter to skip compatibility checks is set. The MODULE_PARM_DESC macro creates one check and two warnings in checkpatch. I reviewed other examples from the kernel and I am following the same convention, so I left it as is. Patch 15 adds a debugfs directory. Patch 16 adds a debugfs file for dumping capdata. Signed-off-by: Derek J. Clark --- v8: - Clean up rebase mixup with re-assinment of wmi_method_args_32 in patches 6 and 14 from {} to { 0x00, 0x00 } and back. - Combine ret_obj declaration and assignment in patch 1. v7: https://lore.kernel.org/platform-driver-x86/20260402032424.678528-1-derekjohn.clark@gmail.com/ - Add 3 additional bug fix patches from Rong Zhang reported by shashiko.dev - Reorder patches so the fixes are upfront in patches 1-7. - Fix various typos and rebase mixups from v6. v6: https://lore.kernel.org/platform-driver-x86/20260331181208.421552-1-derekjohn.clark@gmail.com/ - Incorporate Rong Zhang's debugfs and decoupling patches into the series. - Add a patch to clean up too many cross-references to wmi-gamezone.h - Make lwmi_attr_id a static inline in wmi-capdata.h - Added a patch to fix a bug where ares.arg1 is uninitialized when it is sent to the firmware. - Add supported checks before adding battery extenstion, and ensure both the new checks and the is_writable checks are not casting u32 to i32. - Misc formating changes. v5: https://lore.kernel.org/platform-driver-x86/20260324221032.1333636-1-derekjohn.clark@gmail.com/ - Remove cv/cd_mode_id references that occured before patch 4. - Move lwmi_attr_id to capdata.c with a namespace export. - Fix mixing include. - Make lwmi_attr_is_supported return bool. - Use switch instead of if for setting/getting charge type state. - Various formatting fixes. v4: https://lore.kernel.org/platform-driver-x86/20260312031032.3467565-1-derekjohn.clark@gmail.com/ - Use loop instead of back gotos for identifying the working attribute ID. - Use function instead of macro to assign attribute_id, preserving types. - Removed unused defines and enum values. - Rename charging defines to clarify thier purpose. - Fixed various formatting issues from v3. - Added module param to skip ACPI check when loading the driver for the power supply extension. - Don't abort adding power supply extension if the ACPI handle from ideapad is not present. - Don't worry about symmetric cleanup when cleaning up attributes in an error state. - Reword Patch 8 commit message to be more concise. - Fix wording in Patch 7 to match the changes. v3: https://lore.kernel.org/platform-driver-x86/20260224043200.2680384-1-derekjohn.clark@gmail.com/ - Re-add HWMON name const and just rename LWMI_OM_FW_ATTR_BASE_PATH - Fix linker warnings by moving acpi/battery include to the end of the list. - Remove CPU/GPU OC features. These attributes are BOOL type and will need a new constructor that I'll add later. v2: https://lore.kernel.org/platform-driver-x86/20260215061339.2842486-1-derekjohn.clark@gmail.com/ - Fix gpu_mode misisng from attributes list. - Fix prototypes for power suppy patch. - Reorganize CPU and GPU attributes alphabetically. - Break out the patch consolidating the driver name cost. - Move some of the refactoring of attribute_id back to into patch 1 where it belongs. - Fix some additional typos in function prototypes. v1: https://lore.kernel.org/platform-driver-x86/20260213081243.794288-1-derekjohn.clark@gmail.com/ Derek J. Clark (10): platform/x86: lenovo-wmi-other: Zero initialize WMI arguments platform/x86: lenovo-wmi-other: Fix tunable_attr_01 struct members platform/x86: lenovo-wmi-other: Limit adding attributes to supported devices platform/x86: lenovo-wmi-helpers: Move gamezone enums to wmi-helpers platform/x86: lenovo-wmi-other: Move LWMI_FAN_DIV platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function platform/x86: lenovo-wmi-other: Add missing CPU tunable attributes platform/x86: lenovo-wmi-other: Add GPU tunable attributes platform/x86: lenovo-wmi-other: Rename LWMI_OM_FW_ATTR_BASE_PATH platform/x86: lenovo-wmi-other: Add WMI battery charge limiting Rong Zhang (6): platform/x86: lenovo-wmi-helpers: Fix memory leak in lwmi_dev_evaluate_int() platform/x86: lenovo-wmi-other: Balance IDA id allocation and free platform/x86: lenovo-wmi-other: Balance component bind and unbind platform/x86: lenovo: Decouple lenovo-wmi-gamezone and lenovo-wmi-other platform/x86: lenovo-wmi-helpers: Add helper for creating per-device debugfs dir platform/x86: lenovo-wmi-capdata: Add debugfs file for dumping capdata .../wmi/devices/lenovo-wmi-other.rst | 19 + drivers/platform/x86/lenovo/Kconfig | 3 +- drivers/platform/x86/lenovo/wmi-capdata.c | 128 ++- drivers/platform/x86/lenovo/wmi-capdata.h | 31 +- drivers/platform/x86/lenovo/wmi-events.c | 2 +- drivers/platform/x86/lenovo/wmi-gamezone.c | 7 +- drivers/platform/x86/lenovo/wmi-gamezone.h | 20 - drivers/platform/x86/lenovo/wmi-helpers.c | 138 +++- drivers/platform/x86/lenovo/wmi-helpers.h | 23 + drivers/platform/x86/lenovo/wmi-other.c | 745 ++++++++++++++---- drivers/platform/x86/lenovo/wmi-other.h | 16 - 11 files changed, 934 insertions(+), 198 deletions(-) delete mode 100644 drivers/platform/x86/lenovo/wmi-gamezone.h delete mode 100644 drivers/platform/x86/lenovo/wmi-other.h -- 2.53.0