xref: /linux/Documentation/wmi/devices/lenovo-wmi-other.rst (revision 9669b2499ea377764f8320dd562dd6cd4ea80a5d)
1*57139e12SDerek J. Clark.. SPDX-License-Identifier: GPL-2.0-or-later
2*57139e12SDerek J. Clark
3*57139e12SDerek J. Clark===========================================================
4*57139e12SDerek J. ClarkLenovo WMI Interface Other Mode Driver (lenovo-wmi-other)
5*57139e12SDerek J. Clark===========================================================
6*57139e12SDerek J. Clark
7*57139e12SDerek J. ClarkIntroduction
8*57139e12SDerek J. Clark============
9*57139e12SDerek J. ClarkLenovo WMI Other Mode interface is broken up into multiple GUIDs,
10*57139e12SDerek J. ClarkThe primary Other Mode interface provides advanced power tuning features
11*57139e12SDerek J. Clarksuch as Package Power Tracking (PPT). It is paired with multiple data block
12*57139e12SDerek J. ClarkGUIDs that provide context for the various methods.
13*57139e12SDerek J. Clark
14*57139e12SDerek J. Clark
15*57139e12SDerek J. ClarkOther Mode
16*57139e12SDerek J. Clark----------
17*57139e12SDerek J. Clark
18*57139e12SDerek J. ClarkWMI GUID ``DC2A8805-3A8C-41BA-A6F7-092E0089CD3B``
19*57139e12SDerek J. Clark
20*57139e12SDerek J. ClarkThe Other Mode WMI interface uses the firmware_attributes class to expose
21*57139e12SDerek J. Clarkvarious WMI attributes provided by the interface in the sysfs. This enables
22*57139e12SDerek J. ClarkCPU and GPU power limit tuning as well as various other attributes for
23*57139e12SDerek J. Clarkdevices that fall under the "Gaming Series" of Lenovo devices. Each
24*57139e12SDerek J. Clarkattribute exposed by the Other Mode interface has corresponding
25*57139e12SDerek J. Clarkcapability data blocks which allow the driver to probe details about the
26*57139e12SDerek J. Clarkattribute. Each attribute has multiple pages, one for each of the platform
27*57139e12SDerek J. Clarkprofiles managed by the Gamezone interface. Attributes are exposed in sysfs
28*57139e12SDerek J. Clarkunder the following path:
29*57139e12SDerek J. Clark
30*57139e12SDerek J. Clark::
31*57139e12SDerek J. Clark
32*57139e12SDerek J. Clark  /sys/class/firmware-attributes/lenovo-wmi-other/attributes/<attribute>/
33*57139e12SDerek J. Clark
34*57139e12SDerek J. ClarkLENOVO_CAPABILITY_DATA_01
35*57139e12SDerek J. Clark-------------------------
36*57139e12SDerek J. Clark
37*57139e12SDerek J. ClarkWMI GUID ``7A8F5407-CB67-4D6E-B547-39B3BE018154``
38*57139e12SDerek J. Clark
39*57139e12SDerek J. ClarkThe LENOVO_CAPABILITY_DATA_01 interface provides information on various
40*57139e12SDerek J. Clarkpower limits of integrated CPU and GPU components.
41*57139e12SDerek J. Clark
42*57139e12SDerek J. ClarkEach attribute has the following properties:
43*57139e12SDerek J. Clark - current_value
44*57139e12SDerek J. Clark - default_value
45*57139e12SDerek J. Clark - display_name
46*57139e12SDerek J. Clark - max_value
47*57139e12SDerek J. Clark - min_value
48*57139e12SDerek J. Clark - scalar_increment
49*57139e12SDerek J. Clark - type
50*57139e12SDerek J. Clark
51*57139e12SDerek J. ClarkThe following attributes are implemented:
52*57139e12SDerek J. Clark - ppt_pl1_spl: Platform Profile Tracking Sustained Power Limit
53*57139e12SDerek J. Clark - ppt_pl2_sppt: Platform Profile Tracking Slow Package Power Tracking
54*57139e12SDerek J. Clark - ppt_pl3_fppt: Platform Profile Tracking Fast Package Power Tracking
55*57139e12SDerek J. Clark
56*57139e12SDerek J. Clark
57*57139e12SDerek J. ClarkWMI interface description
58*57139e12SDerek J. Clark=========================
59*57139e12SDerek J. Clark
60*57139e12SDerek J. ClarkThe WMI interface description can be decoded from the embedded binary MOF (bmof)
61*57139e12SDerek J. Clarkdata using the `bmfdec <https://github.com/pali/bmfdec>`_ utility:
62*57139e12SDerek J. Clark
63*57139e12SDerek J. Clark::
64*57139e12SDerek J. Clark
65*57139e12SDerek J. Clark  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO_OTHER_METHOD class"), guid("{dc2a8805-3a8c-41ba-a6f7-092e0089cd3b}")]
66*57139e12SDerek J. Clark  class LENOVO_OTHER_METHOD {
67*57139e12SDerek J. Clark    [key, read] string InstanceName;
68*57139e12SDerek J. Clark    [read] boolean Active;
69*57139e12SDerek J. Clark
70*57139e12SDerek J. Clark    [WmiMethodId(17), Implemented, Description("Get Feature Value ")] void GetFeatureValue([in] uint32 IDs, [out] uint32 value);
71*57139e12SDerek J. Clark    [WmiMethodId(18), Implemented, Description("Set Feature Value ")] void SetFeatureValue([in] uint32 IDs, [in] uint32 value);
72*57139e12SDerek J. Clark    [WmiMethodId(19), Implemented, Description("Get Data By Command ")] void GetDataByCommand([in] uint32 IDs, [in] uint32 Command, [out] uint32 DataSize, [out, WmiSizeIs("DataSize")] uint32 Data[]);
73*57139e12SDerek J. Clark    [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[]);
74*57139e12SDerek J. Clark  };
75*57139e12SDerek J. Clark
76*57139e12SDerek J. Clark  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 00"), guid("{362a3afe-3d96-4665-8530-96dad5bb300e}")]
77*57139e12SDerek J. Clark  class LENOVO_CAPABILITY_DATA_00 {
78*57139e12SDerek J. Clark    [key, read] string InstanceName;
79*57139e12SDerek J. Clark    [read] boolean Active;
80*57139e12SDerek J. Clark
81*57139e12SDerek J. Clark    [WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
82*57139e12SDerek J. Clark    [WmiDataId(2), read, Description("Capability.")] uint32 Capability;
83*57139e12SDerek J. Clark    [WmiDataId(3), read, Description("Capability Default Value.")] uint32 DefaultValue;
84*57139e12SDerek J. Clark  };
85*57139e12SDerek J. Clark
86*57139e12SDerek J. Clark  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 01"), guid("{7a8f5407-cb67-4d6e-b547-39b3be018154}")]
87*57139e12SDerek J. Clark  class LENOVO_CAPABILITY_DATA_01 {
88*57139e12SDerek J. Clark    [key, read] string InstanceName;
89*57139e12SDerek J. Clark    [read] boolean Active;
90*57139e12SDerek J. Clark
91*57139e12SDerek J. Clark    [WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
92*57139e12SDerek J. Clark    [WmiDataId(2), read, Description("Capability.")] uint32 Capability;
93*57139e12SDerek J. Clark    [WmiDataId(3), read, Description("Default Value.")] uint32 DefaultValue;
94*57139e12SDerek J. Clark    [WmiDataId(4), read, Description("Step.")] uint32 Step;
95*57139e12SDerek J. Clark    [WmiDataId(5), read, Description("Minimum Value.")] uint32 MinValue;
96*57139e12SDerek J. Clark    [WmiDataId(6), read, Description("Maximum Value.")] uint32 MaxValue;
97*57139e12SDerek J. Clark  };
98*57139e12SDerek J. Clark
99*57139e12SDerek J. Clark  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO CAPABILITY DATA 02"), guid("{bbf1f790-6c2f-422b-bc8c-4e7369c7f6ab}")]
100*57139e12SDerek J. Clark  class LENOVO_CAPABILITY_DATA_02 {
101*57139e12SDerek J. Clark    [key, read] string InstanceName;
102*57139e12SDerek J. Clark    [read] boolean Active;
103*57139e12SDerek J. Clark
104*57139e12SDerek J. Clark    [WmiDataId(1), read, Description(" IDs.")] uint32 IDs;
105*57139e12SDerek J. Clark    [WmiDataId(2), read, Description("Capability.")] uint32 Capability;
106*57139e12SDerek J. Clark    [WmiDataId(3), read, Description("Data Size.")] uint32 DataSize;
107*57139e12SDerek J. Clark    [WmiDataId(4), read, Description("Default Value"), WmiSizeIs("DataSize")] uint8 DefaultValue[];
108*57139e12SDerek J. Clark  };
109