mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 18:10:32 +00:00

Adds documentation for new lenovo-wmi drivers. Reviewed-by: Alok Tiwari <alok.a.tiwari@oracle.com> Reviewed-by: Armin Wolf <W_Armin@gmx.de> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com> Link: https://lore.kernel.org/r/20250702033826.1057762-2-derekjohn.clark@gmail.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
109 lines
4.6 KiB
ReStructuredText
109 lines
4.6 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
===========================================================
|
|
Lenovo WMI Interface Other Mode Driver (lenovo-wmi-other)
|
|
===========================================================
|
|
|
|
Introduction
|
|
============
|
|
Lenovo WMI Other Mode interface is broken up into multiple GUIDs,
|
|
The primary Other Mode interface provides advanced power tuning features
|
|
such as Package Power Tracking (PPT). It is paired with multiple data block
|
|
GUIDs that provide context for the various methods.
|
|
|
|
|
|
Other Mode
|
|
----------
|
|
|
|
WMI GUID ``DC2A8805-3A8C-41BA-A6F7-092E0089CD3B``
|
|
|
|
The Other Mode WMI interface uses the firmware_attributes class to expose
|
|
various WMI attributes provided by the interface in the sysfs. This enables
|
|
CPU and GPU power limit tuning as well as various other attributes for
|
|
devices that fall under the "Gaming Series" of Lenovo devices. Each
|
|
attribute exposed by the Other Mode interface has corresponding
|
|
capability data blocks which allow the driver to probe details about the
|
|
attribute. Each attribute has multiple pages, one for each of the platform
|
|
profiles managed by the Gamezone interface. Attributes are exposed in sysfs
|
|
under the following path:
|
|
|
|
::
|
|
|
|
/sys/class/firmware-attributes/lenovo-wmi-other/attributes/<attribute>/
|
|
|
|
LENOVO_CAPABILITY_DATA_01
|
|
-------------------------
|
|
|
|
WMI GUID ``7A8F5407-CB67-4D6E-B547-39B3BE018154``
|
|
|
|
The LENOVO_CAPABILITY_DATA_01 interface provides information on various
|
|
power limits of integrated CPU and GPU components.
|
|
|
|
Each attribute has the following properties:
|
|
- current_value
|
|
- default_value
|
|
- display_name
|
|
- max_value
|
|
- min_value
|
|
- scalar_increment
|
|
- type
|
|
|
|
The following attributes are implemented:
|
|
- ppt_pl1_spl: Platform Profile Tracking Sustained Power Limit
|
|
- ppt_pl2_sppt: Platform Profile Tracking Slow Package Power Tracking
|
|
- ppt_pl3_fppt: Platform Profile Tracking Fast Package Power Tracking
|
|
|
|
|
|
WMI interface description
|
|
=========================
|
|
|
|
The WMI interface description can be decoded from the embedded binary MOF (bmof)
|
|
data using the `bmfdec <https://github.com/pali/bmfdec>`_ utility:
|
|
|
|
::
|
|
|
|
[WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO_OTHER_METHOD class"), guid("{dc2a8805-3a8c-41ba-a6f7-092e0089cd3b}")]
|
|
class LENOVO_OTHER_METHOD {
|
|
[key, read] string InstanceName;
|
|
[read] boolean Active;
|
|
|
|
[WmiMethodId(17), Implemented, Description("Get Feature Value ")] void GetFeatureValue([in] uint32 IDs, [out] uint32 value);
|
|
[WmiMethodId(18), Implemented, Description("Set Feature Value ")] void SetFeatureValue([in] uint32 IDs, [in] uint32 value);
|
|
[WmiMethodId(19), Implemented, Description("Get Data By Command ")] void GetDataByCommand([in] uint32 IDs, [in] uint32 Command, [out] uint32 DataSize, [out, WmiSizeIs("DataSize")] uint32 Data[]);
|
|
[WmiMethodId(99), Implemented, Description("Get Data By Package for TAC")] void GetDataByPackage([in, Max(40)] uint8 Input[], [out] uint32 DataSize, [out, WmiSizeIs("DataSize")] uint8 Data[]);
|
|
};
|
|
|
|
[WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 00"), guid("{362a3afe-3d96-4665-8530-96dad5bb300e}")]
|
|
class LENOVO_CAPABILITY_DATA_00 {
|
|
[key, read] string InstanceName;
|
|
[read] boolean Active;
|
|
|
|
[WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
|
|
[WmiDataId(2), read, Description("Capability.")] uint32 Capability;
|
|
[WmiDataId(3), read, Description("Capability Default Value.")] uint32 DefaultValue;
|
|
};
|
|
|
|
[WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 01"), guid("{7a8f5407-cb67-4d6e-b547-39b3be018154}")]
|
|
class LENOVO_CAPABILITY_DATA_01 {
|
|
[key, read] string InstanceName;
|
|
[read] boolean Active;
|
|
|
|
[WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
|
|
[WmiDataId(2), read, Description("Capability.")] uint32 Capability;
|
|
[WmiDataId(3), read, Description("Default Value.")] uint32 DefaultValue;
|
|
[WmiDataId(4), read, Description("Step.")] uint32 Step;
|
|
[WmiDataId(5), read, Description("Minimum Value.")] uint32 MinValue;
|
|
[WmiDataId(6), read, Description("Maximum Value.")] uint32 MaxValue;
|
|
};
|
|
|
|
[WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 02"), guid("{bbf1f790-6c2f-422b-bc8c-4e7369c7f6ab}")]
|
|
class LENOVO_CAPABILITY_DATA_02 {
|
|
[key, read] string InstanceName;
|
|
[read] boolean Active;
|
|
|
|
[WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
|
|
[WmiDataId(2), read, Description("Capability.")] uint32 Capability;
|
|
[WmiDataId(3), read, Description("Data Size.")] uint32 DataSize;
|
|
[WmiDataId(4), read, Description("Default Value"), WmiSizeIs("DataSize")] uint8 DefaultValue[];
|
|
};
|