.../wmi/devices/lenovo-wmi-other.rst | 19 + drivers/platform/x86/lenovo/Kconfig | 1 + drivers/platform/x86/lenovo/wmi-capdata.c | 25 +- drivers/platform/x86/lenovo/wmi-capdata.h | 10 +- drivers/platform/x86/lenovo/wmi-gamezone.h | 1 + drivers/platform/x86/lenovo/wmi-other.c | 586 ++++++++++++++++-- 6 files changed, 596 insertions(+), 46 deletions(-)
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 adds a function to make assigning attribute ID's for capdata
cleaner and easier.
Patch 4 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 as some legacy
interfaces don't use the custom mode in the method or capdata ID.
Patch 5 adds the remaining CPU attributes that weren't previously
exposed.
Patch 6 adds GPU attributes.
Patch 7 renames a name constant in preparation for patch 6.
Patch 8 adds battery charge-type limiting when supported only by WMI, or
when a module parameter to skip this check 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.
Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
---
v5:
- 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 (8):
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: 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
.../wmi/devices/lenovo-wmi-other.rst | 19 +
drivers/platform/x86/lenovo/Kconfig | 1 +
drivers/platform/x86/lenovo/wmi-capdata.c | 25 +-
drivers/platform/x86/lenovo/wmi-capdata.h | 10 +-
drivers/platform/x86/lenovo/wmi-gamezone.h | 1 +
drivers/platform/x86/lenovo/wmi-other.c | 586 ++++++++++++++++--
6 files changed, 596 insertions(+), 46 deletions(-)
--
2.53.0
Hi Derek, There are typos in the patch titles (this and subsequent patches). s#platform-x86#platform/x86#g On Tue, 2026-03-24 at 22:10 +0000, Derek J. Clark wrote: > 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 adds a function to make assigning attribute ID's for capdata > cleaner and easier. > > Patch 4 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 as some legacy > interfaces don't use the custom mode in the method or capdata ID. > > Patch 5 adds the remaining CPU attributes that weren't previously > exposed. > > Patch 6 adds GPU attributes. > > Patch 7 renames a name constant in preparation for patch 6. > > Patch 8 adds battery charge-type limiting when supported only by WMI, or > when a module parameter to skip this check 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. > > Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com> The series LGTM generally, thanks! There are some tiny issues though, see my replies to the corresponding patches. With them fixed, for the whole series: Reviewed-by: Rong Zhang <i@rong.moe> My device doesn't support any CPU, GPU or PSU attributes, so for patch 1-4 and 7: Tested-by: Rong Zhang <i@rong.moe> Thanks, Rong > --- > v5: > - 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 (8): > 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: 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 > > .../wmi/devices/lenovo-wmi-other.rst | 19 + > drivers/platform/x86/lenovo/Kconfig | 1 + > drivers/platform/x86/lenovo/wmi-capdata.c | 25 +- > drivers/platform/x86/lenovo/wmi-capdata.h | 10 +- > drivers/platform/x86/lenovo/wmi-gamezone.h | 1 + > drivers/platform/x86/lenovo/wmi-other.c | 586 ++++++++++++++++-- > 6 files changed, 596 insertions(+), 46 deletions(-)
© 2016 - 2026 Red Hat, Inc.