From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f169.google.com (mail-dy1-f169.google.com [74.125.82.169]) (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 8B788258CD0 for ; Sun, 10 May 2026 04:25:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778387152; cv=none; b=TiVNXa6SsU1B4pGEy6GRSoeSy991882oRHJ+Pb6oixUufp8rq+cqno9PoWi+GyMmdq+7IJPLOHYrsBI050uovQ+EyNBfS1SET2MEBmnaSntMwOdgVbrCDZBZFw52ZtSCF8fd4eVzN+cU6w7UUDfzbN86mQXCB1o6eu0spl4EAT0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778387152; c=relaxed/simple; bh=zVjY5PAgoayu8ZUPVlDc5nMa0/jIRUm5NO0Aq3735TA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=n0yyMdPYA+MY+IE7diYk2kY0vQ3+gufsZVGS7raoRmexKzTF3NlClxxWnFPc4NgL85zHoQyVn0j1KzPw52Qufq2vNFIA9bTK/dkBXi1v0mCfI2bW1sclDribXjaTlknN4ybxqylFZPHduitCiEGFwTv1RZ7Ol8uRTzOiobWMXvo= 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=P+vNtnIS; arc=none smtp.client-ip=74.125.82.169 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="P+vNtnIS" Received: by mail-dy1-f169.google.com with SMTP id 5a478bee46e88-2ef2a1cc06dso3935635eec.0 for ; Sat, 09 May 2026 21:25:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778387150; x=1778991950; 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=PqtVhEaVWnp1lRm3AkInJ91h/Wuun/IaD7ZjeoG5PHg=; b=P+vNtnISBlQNcwGCM/eiUJcprJlKQcg8fGaGxpL5L1iFN4Fm6mwd5OW4O6pk59hffc WFzeTKNaF65w9afmllWob3Iuxe9TolBkUOqSVgnMKvIBIi6xKEc+NVfsRg75A+qJQ1bA BOzVgwfMPckAB8OkTJ8UFnBc/IUoBsmp49K4m5dR6aetCIDWmR6sXVTocutShdDNMIcx p5X/Yztu7HrskOPOH0coVBCXyqmeIG9B8plgd72zfX9EmK+Mn9TyABDuTGMy3tsWILsv i0nAMUt+R1JO2lV+O+RzGPFNg7XExfCp+LBnBWRF6mA0ptODgUYvNJFRXuGPXUsqbxcD T45g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778387150; x=1778991950; 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=PqtVhEaVWnp1lRm3AkInJ91h/Wuun/IaD7ZjeoG5PHg=; b=AW7TtzDPixYmMVesw4SdsTBfNB1elJemVk2vgMhGD/d7nPanpD3gW7ntM8aadpDa0n 9SFfBrzyaZISJq4o+e5CwBXf5Sg4rz51QXaC11m4QX4L7hFap8bw0uSVi4FXihbbew5M sWixV42h8B0W5Pn26cA9lOJD+CLDcVMGzYsj8FcL1/ddhSPtA4ksD/ktFkmERLx4zjeD qrQP1LD0pF0hZqkrHcLDKZ7R+HHuNCVO92eZVEPq2bosyxq4y3yD8fD5tI19ueJnWmX1 RbfwBcV3v2eeQyvqMETuD+2FmJBOgHk0Q1u5M91kSroQRY5JEASDTN/WvbVepjI2XsrS d4PA== X-Forwarded-Encrypted: i=1; AFNElJ8sUJ5p2nMf1xGeSEi1ZN0MGscWj+dVtnr4+w4XuGMAdGnbq4hK0KEL2FnIjqtS1kt0hDv6oXWtCV4nsSk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0Dv6h0QcWeaiXm7uSsiDmYt7WN9MFDCUE+axspEsKhQr0nCLB XmSqUDLhU8eMITtGu88hEwUOFAj622yxCLqYfLx9cBrgnfByFM9NgLHp X-Gm-Gg: Acq92OGy/QNcgFbcWmDxJWby30ZqECNVOoHzNGCe6J7NJiRea8Y8o9/tHXi2CdUtcls P49OeC8VFbm7dfMl6geEW8xsRI4QmhdJICYnGNsNowzpCrA76PBguLRFL8Fn6PFu5gHCoa11W/W 9Tqo3GKF78D0Qat/57IkbrqggNNHgv59BKLT18FQFFr69dHaD83gUCXPBoyvprwdsLby+iL53xb qFiyAMnVeopwSFnQ3jD/jrjRSCkL61r5pupn4teOSwYTGxS3au61sDuFh4u/u5JdR6pg4wAdDV0 IItV/twzx+eCfJ6ZHsXwGKnLL+PfI+wUCYrHqdUlZwRULlsYbejDkEaWH6Bw2tEche16GF+p7WT YMbX2Lyu//GBETOEgLPJXgAJhd+99AFnYeX8+8B+vaySU/LY5VciZGllKt7r/2NwT1A3UcYVgBu pf+wpWg4qVdWkQIu1+FyTepLEEpQcXFUB/qOLoyb6oqqU6bVBX8OUjzOxrzFHjK+z9AjAcA0r/c BHV X-Received: by 2002:a05:7301:5f02:b0:2f5:6dfc:cb6d with SMTP id 5a478bee46e88-2fb3e2cf016mr2210769eec.11.1778387149413; Sat, 09 May 2026 21:25:49 -0700 (PDT) Received: from lappy (108-228-232-20.lightspeed.sndgca.sbcglobal.net. [108.228.232.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d3047sm10069960eec.10.2026.05.09.21.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 21:25:49 -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" , "Pierre-Loup A . Griffais" , =?UTF-8?q?N=C3=ADcolas=20F=20=2E=20R=20=2E=20A=20=2E=20Prado?= , marshall@shzj.cc, hyacinth@shzj.cc, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v12 00/16] lenovo-wmi: Add fixes and enhancement Date: Sun, 10 May 2026 04:25:30 +0000 Message-ID: <20260510042546.436874-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-Type: text/plain; charset=UTF-8 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 least amount of churn in each patch. This has resulted in two formatting patches being added to the stable Cc list as prerequisites for some of the fixes. Patches 1-9 fix various bugs and formatting, and are Cc'd to stable. for the formatting only ones, patch 7 moves all gamezone enums from the gamezone header into the helpers header and patch 8 adds two functions to make assigning attribute ID's for capdata0X and tunable_attr_01 cleaner. Patch 10 adds the remaining CPU attributes that weren't previously exposed. Patch 11 adds GPU attributes. Patch 12 renames a name constant in preparation for patch 6. Patch 13 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 14 adds a module parameter, force_load_psy_ext, to bypass ACPI and BIOS compatibility checks for the power supply extension. Patch 15 adds a debugfs directory. Patch 16 adds a debugfs file for dumping capdata. Signed-off-by: Derek J. Clark --- v12: - Break out force_load_psy_ext into its own patch. - Drop fixes tags for formatting only prerequisite patches Cc'd to stable. - Fix formatting in various places. - Use correct type when passing args in new functions. I will revisit & fix older functions in a new series. v11: https://lore.kernel.org/platform-driver-x86/20260507180507.912966-1-derekjohn.clark@gmail.com/ - Reorganize patches in a way that cleans up the churn with assignment of attribute IDs. This also allowed dropping the patch that moved the LWMI_FAN_DIV patch as it is now effectively moved when declaring the updated LWMI_ATTR_ID_FAN_DIV macro. As a result, some formatting only patches were added to the Cc list for stable since as they are now prerequisites to some of the fixes. - Refactor charge control patch to use charge_behavior and charge_control_end_threshold instead of charge_types to be in accordance with the power supply class documentation. - Minor additional formatting fixes. v10: https://lore.kernel.org/platform-driver-x86/20260411162334.25682-1-derekjohn.clark@gmail.com/ - Fix misnamed attribute in wmi-other. v9: https://lore.kernel.org/platform-driver-x86/20260411162334.25682-1-derekjohn.clark@gmail.com/ - Invert ida_alloc fail logic. - Fix dropped mode arg in current_value_show. - Fix misnamed attribute in documentation. v8: https://lore.kernel.org/platform-driver-x86/20260406201400.438221-1-derekjohn.clark@gmail.com/ - 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-helpers: Move gamezone enums to wmi-helpers platform/x86: lenovo-wmi-other: Add Attribute ID helper functions platform/x86: lenovo-wmi-other: Limit adding attributes to supported devices 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 platform/x86: lenovo-wmi-other: Add force_load_psy_ext module parameter 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 | 34 +- 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 | 139 ++- drivers/platform/x86/lenovo/wmi-helpers.h | 23 + drivers/platform/x86/lenovo/wmi-other.c | 867 +++++++++++++++--- drivers/platform/x86/lenovo/wmi-other.h | 16 - 11 files changed, 1061 insertions(+), 197 deletions(-) delete mode 100644 drivers/platform/x86/lenovo/wmi-gamezone.h delete mode 100644 drivers/platform/x86/lenovo/wmi-other.h -- 2.53.0