From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f46.google.com (mail-dl1-f46.google.com [74.125.82.46]) (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 10A8044CF54 for ; Tue, 31 Mar 2026 18:12:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774980739; cv=none; b=XKufUcCRoEYtkwBTBc/R8grfq+93abIQawW3JCI2ghtKf8qMm+3n1uTdMGmArZGCGIK5kL7j5siWDjfXa6IQ8mRW8ixKD0m/2T3g6djome/k4vefVyIYUCFYi+bZLoRr6WS2NTClp+Qgg3nLYoFHMuL/u0RoDxnAp6rbmtjL300= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774980739; c=relaxed/simple; bh=aS2VEndl1x5GX4YU4whjJrEJslje4VSUOQm9skgbG7o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=g7sQiLRgzhTm8CnjC+byj4apLI4zj8HWT00bxP9GPS94QfvJYV/x5QsSRcfpQIvRUSDbv4G2gqt0bUHyjw0Hx3TDrloBfrn6NGlrC5sGLCIAE1BDwp5gZLBGEFp6mRoBVjDN1JU74hDVOG6JbWFH5jP+bmFE0c6rkq9PT4kyqIk= 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=LBWuKc5/; arc=none smtp.client-ip=74.125.82.46 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="LBWuKc5/" Received: by mail-dl1-f46.google.com with SMTP id a92af1059eb24-1274204434bso134866c88.1 for ; Tue, 31 Mar 2026 11:12:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774980733; x=1775585533; 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=lXqFGfnZOohFZ5jCvUgU9upCsANV+IaiAMn5ggVt+Zk=; b=LBWuKc5/AELHIaYE0hoR0guhSEH4wJMmRk9INtG6D0uzinaXXnUNsPyzH1YgHdbPcM gayXeUV0hkEOhD17FH7uhggqoSOuzqgk8pUkO+ahsuXJk3KjPkMMj170dSZwZTXFCSSS /1SjzilE7IZuK3DNt7RJ5MDS3mQtb6Un6GMtMfjQCklEVepeQ+ihkd0q+VmIJjJABk0A zdi2E0HGJlCB8zePQ2Y2tqeacR20e6XEahne1yGTZ9IwZ9EE+n56lYnhli3eSvRk+eBR O8HzV0wrvg1qvdGB2kHaWlzBiB8L0eKwATXJ+GdpXRt+xoclcuzsvvfR7AHu1InZX3MY Zs2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774980733; x=1775585533; 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=lXqFGfnZOohFZ5jCvUgU9upCsANV+IaiAMn5ggVt+Zk=; b=QvfHfc3jdF3llwfm+w0UDjf9I8XjNtqjGMrca5fmNoHYZvObGISCk7e7eHcufu6tAd metompwxfDyMJhr2rbwYimffQkq7BpEThHVxu82HpbDXvvBPypMzob32SghhsPRBD6DL s1M9qmAo2Ynsed2HpQb4+sW6+AcrTLuOsmyjPAXDWk2cUOcm/zyphez8qmAsbpQK/aN6 ML+w3QCaOrwUBXp1MVWluyTDFJOXdW5Z9vCWPCpuHb/bC6dpGW+LbwkrDP8ej8XEiYJB syrOMlYiAkzbJB4yAjKaJtEOJsTj/gmJL3TMxOEPzgGzaEPnJmS1t+SQYYPMsiYCOH8D lq9A== X-Forwarded-Encrypted: i=1; AJvYcCV3vpO+4PNDjtlA3Ir1KE2gQ/H2KYYr0CFzBJvn7lOjwmxtner/x1X/7lZr4A71qgc5qGVTsdEIBMJ7ye4=@vger.kernel.org X-Gm-Message-State: AOJu0YxGDkUyY14y0sIb4aiy5rrdxFm56TrBfg16bCqsLlnaxfa+qPug 6Uve/id3HkaNhHI0Wc4Djt2/sDoUTLE+zqAaWgGUlNq6nOeDP5HG9qvu X-Gm-Gg: ATEYQzzn6xu5Jq976poKjHgFaACKLLQuc3ZMFtrKPB3HR9E03ntcGGrHf8URPDuDpC1 S0NRP6rw+3P/F0wV4g3de7ZEo4XfzVgjrvibWNzfmyMpX8DQLz1GMFqpvRuzF+Q5VtVtiHVv7nT a9+g+iZTla6N79fatlWdd1fjO/v7LIMe/R08zkkjBSDnvd9XQGp1/VKCh1kfHtBAIfMsMAm/JSo 9f6uCyc/d1A/zZyRHLsqtpXi0HjK+A4r81aoKYnXag/JblJjuYpor8nN2pVie5y1DkCejW5YhFw 0nF6jYgHsW4/EJumSa4IMZIuDDLUUfTV8YJqJaCCjfOmwiWngv7vCljWHO5STGys17ELx8lEX98 HxWvYuCkboS8Pb9c5f31nfRF64fwtMx4OynZ727gwHE1t82+6VwvyckW1f6VU0IwVnic5BrgGem WpFw07jMVOdNq2zFrB1dKp5EU899OTCeY+xvLcJwZMFUqyP0lzkIQIKN5O8OkuKNo3zTvAwKJJk Ahy X-Received: by 2002:a05:7022:eac1:b0:12a:68cc:3ee4 with SMTP id a92af1059eb24-12bddcb3df1mr2133979c88.0.1774980732498; Tue, 31 Mar 2026 11:12:12 -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-12abbe21787sm10769272c88.11.2026.03.31.11.12.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Mar 2026 11:12:12 -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 v6 00/13] platform-x86: lenovo-wmi: Add fixes and enhancement Date: Tue, 31 Mar 2026 18:11:55 +0000 Message-ID: <20260331181208.421552-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 features and fixes to the lenovo-wmi drivers. Patch 1 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 2 cleans up tunable_attr_01 by removing an unused pointer and correctly assigning the members as u8 isntead of u32. Patch 3 fixes a bug when sending 32 bit arguments via WMI where the second value in the args struct was uninitialized. Patch 4 moves all gamezone enums from the gamezone header into the helpers header in preparation for the rest of the series. Patch 5 adds a function to make assigning attribute ID's for capdata cleaner and easier. Patch 6 addresses bugs where devices that don't support exposed attributes would still create the attribute, and also attempts to identify the correct capdata and set/get methods since some legacy interfaces don't use the custom mode in the method or capdata ID. Patch 7 adds the remaining CPU attributes that weren't previously exposed. Patch 8 adds GPU attributes. Patch 9 renames a name constant in preparation for patch 6. Patch 10 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 11 fixes a bug where the 'gamezone' and the 'other' drivers were incorrectly coupled in the Kconfig, leading to side effects under certain kernel configurations. Patch 12 adds a debugfs directory. Patch 13 adds a debugfs file for dumping capdata. Signed-off-by: Derek J. Clark --- v6: - 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: Move LWMI_FAN_DIV platform/x86: lenovo-wmi-other: Fix tunable_attr_01 struct members platform/x86: lenovo-wmi-other: Zero initialize WMI arguments platform/x86: lenovo-wmi-helpers: Move gamezone enums to wmi-helpers platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function 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 Rong Zhang (3): 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 | 5 +- drivers/platform/x86/lenovo/wmi-gamezone.h | 20 - drivers/platform/x86/lenovo/wmi-helpers.c | 136 ++++ drivers/platform/x86/lenovo/wmi-helpers.h | 23 + drivers/platform/x86/lenovo/wmi-other.c | 689 ++++++++++++++---- drivers/platform/x86/lenovo/wmi-other.h | 16 - 11 files changed, 891 insertions(+), 181 deletions(-) delete mode 100644 drivers/platform/x86/lenovo/wmi-gamezone.h delete mode 100644 drivers/platform/x86/lenovo/wmi-other.h -- 2.53.0