File Index
Files and directories
Sign in
FILE

lenovo-wmi-gamezone.rst

File preview with syntax highlighting.

linux-6.19.14/Documentation/wmi/devices/lenovo-wmi-gamezone.rst RESTRUCTUREDTEXT
  1.. SPDX-License-Identifier: GPL-2.0-or-later
  2
  3==========================================================
  4Lenovo WMI Interface Gamezone Driver (lenovo-wmi-gamezone)
  5==========================================================
  6
  7Introduction
  8============
  9The Lenovo WMI gamezone interface is broken up into multiple GUIDs,
 10The primary "Gamezone" GUID provides advanced features such as fan
 11profiles and overclocking. It is paired with multiple event GUIDs
 12and data block GUIDs that provide context for the various methods.
 13
 14Gamezone Data
 15-------------
 16
 17WMI GUID ``887B54E3-DDDC-4B2C-8B88-68A26A8835D0``
 18
 19The Gamezone Data WMI interface provides platform-profile and fan curve
 20settings for devices that fall under the "Gaming Series" of Lenovo devices.
 21It uses a notifier chain to inform other Lenovo WMI interface drivers of the
 22current platform profile when it changes. The currently set profile can be
 23determined by the user on the hardware by looking at the color of the power
 24or profile LED, depending on the model.
 25
 26The following platform profiles are supported:
 27 - low-power, blue LED
 28 - balanced, white LED
 29 - performance, red LED
 30 - max-power, purple LED
 31 - custom, purple LED
 32
 33Extreme Mode
 34~~~~~~~~~~~~~~~~~~~~
 35Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
 36enabled in their BIOS. When available, this mode will be represented by the
 37max-power platform profile.
 38
 39For a subset of these devices the "Extreme Mode" profile is incomplete in
 40the BIOS and setting it will cause undefined behavior. A BIOS bug quirk table
 41is provided to ensure these devices cannot set "Extreme Mode" from the driver.
 42
 43Custom Profile
 44~~~~~~~~~~~~~~
 45The custom profile represents a hardware mode on Lenovo devices that enables
 46user modifications to Package Power Tracking (PPT) and fan curve settings.
 47When an attribute exposed by the Other Mode WMI interface is to be modified,
 48the Gamezone driver must first be switched to the "custom" profile manually,
 49or the setting will have no effect. If another profile is set from the list
 50of supported profiles, the BIOS will override any user PPT settings when
 51switching to that profile.
 52
 53Gamezone Thermal Mode Event
 54---------------------------
 55
 56WMI GUID ``D320289E-8FEA-41E0-86F9-911D83151B5F``
 57
 58The Gamezone Thermal Mode Event interface notifies the system when the platform
 59profile has changed, either through the hardware event (Fn+Q for laptops or
 60Legion + Y for Go Series), or through the Gamezone WMI interface. This event is
 61implemented in the Lenovo WMI Events driver (lenovo-wmi-events).
 62
 63
 64WMI interface description
 65=========================
 66
 67The WMI interface description can be decoded from the embedded binary MOF (bmof)
 68data using the `bmfdec <https://github.com/pali/bmfdec>`_ utility:
 69
 70::
 71
 72  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO_GAMEZONE_DATA class"), guid("{887B54E3-DDDC-4B2C-8B88-68A26A8835D0}")]
 73  class LENOVO_GAMEZONE_DATA {
 74    [key, read] string InstanceName;
 75    [read] boolean Active;
 76
 77    [WmiMethodId(4), Implemented, Description("Is SupportGpu OverClock")] void IsSupportGpuOC([out, Description("Is SupportGpu OverClock")] uint32 Data);
 78    [WmiMethodId(11), Implemented, Description("Get AslCode Version")] void GetVersion ([out, Description("AslCode version")] UINT32 Data);
 79    [WmiMethodId(12), Implemented, Description("Fan cooling capability")] void IsSupportFanCooling([out, Description("Fan cooling capability")] UINT32 Data);
 80    [WmiMethodId(13), Implemented, Description("Set Fan cooling on/off")] void SetFanCooling ([in, Description("Set Fan cooling on/off")] UINT32 Data);
 81    [WmiMethodId(14), Implemented, Description("cpu oc capability")] void IsSupportCpuOC ([out, Description("cpu oc capability")] UINT32 Data);
 82    [WmiMethodId(15), Implemented, Description("bios has overclock capability")] void IsBIOSSupportOC ([out, Description("bios has overclock capability")] UINT32 Data);
 83    [WmiMethodId(16), Implemented, Description("enable or disable overclock in bios")] void SetBIOSOC ([in, Description("enable or disable overclock in bios")] UINT32 Data);
 84    [WmiMethodId(18), Implemented, Description("Get CPU temperature")] void GetCPUTemp ([out, Description("Get CPU temperature")] UINT32 Data);
 85    [WmiMethodId(19), Implemented, Description("Get GPU temperature")] void GetGPUTemp ([out, Description("Get GPU temperature")] UINT32 Data);
 86    [WmiMethodId(20), Implemented, Description("Get Fan cooling on/off status")] void GetFanCoolingStatus ([out, Description("Get Fan cooling on/off status")] UINT32 Data);
 87    [WmiMethodId(21), Implemented, Description("EC support disable windows key capability")] void IsSupportDisableWinKey ([out, Description("EC support disable windows key capability")] UINT32 Data);
 88    [WmiMethodId(22), Implemented, Description("Set windows key disable/enable")] void SetWinKeyStatus ([in, Description("Set windows key disable/enable")] UINT32 Data);
 89    [WmiMethodId(23), Implemented, Description("Get windows key disable/enable status")] void GetWinKeyStatus ([out, Description("Get windows key disable/enable status")] UINT32 Data);
 90    [WmiMethodId(24), Implemented, Description("EC support disable touchpad capability")] void IsSupportDisableTP ([out, Description("EC support disable touchpad capability")] UINT32 Data);
 91    [WmiMethodId(25), Implemented, Description("Set touchpad disable/enable")] void SetTPStatus ([in, Description("Set touchpad disable/enable")] UINT32 Data);
 92    [WmiMethodId(26), Implemented, Description("Get touchpad disable/enable status")] void GetTPStatus ([out, Description("Get touchpad disable/enable status")] UINT32 Data);
 93    [WmiMethodId(30), Implemented, Description("Get Keyboard feature list")] void GetKeyboardfeaturelist ([out, Description("Get Keyboard feature list")] UINT32 Data);
 94    [WmiMethodId(31), Implemented, Description("Get Memory OC Information")] void GetMemoryOCInfo ([out, Description("Get Memory OC Information")] UINT32 Data);
 95    [WmiMethodId(32), Implemented, Description("Water Cooling feature capability")] void IsSupportWaterCooling ([out, Description("Water Cooling feature capability")] UINT32 Data);
 96    [WmiMethodId(33), Implemented, Description("Set Water Cooling status")] void SetWaterCoolingStatus ([in, Description("Set Water Cooling status")] UINT32 Data);
 97    [WmiMethodId(34), Implemented, Description("Get Water Cooling status")] void GetWaterCoolingStatus ([out, Description("Get Water Cooling status")] UINT32 Data);
 98    [WmiMethodId(35), Implemented, Description("Lighting feature capability")] void IsSupportLightingFeature ([out, Description("Lighting feature capability")] UINT32 Data);
 99    [WmiMethodId(36), Implemented, Description("Set keyboard light off or on to max")] void SetKeyboardLight ([in, Description("keyboard light off or on switch")] UINT32 Data);
100    [WmiMethodId(37), Implemented, Description("Get keyboard light on/off status")] void GetKeyboardLight ([out, Description("Get keyboard light on/off status")] UINT32 Data);
101    [WmiMethodId(38), Implemented, Description("Get Macrokey scan code")] void GetMacrokeyScancode ([in, Description("Macrokey index")] UINT32 idx, [out, Description("Scan code")] UINT32 scancode);
102    [WmiMethodId(39), Implemented, Description("Get Macrokey count")] void GetMacrokeyCount ([out, Description("Macrokey count")] UINT32 Data);
103    [WmiMethodId(40), Implemented, Description("Support G-Sync feature")] void IsSupportGSync ([out, Description("Support G-Sync feature")] UINT32 Data);
104    [WmiMethodId(41), Implemented, Description("Get G-Sync Status")] void GetGSyncStatus ([out, Description("Get G-Sync Status")] UINT32 Data);
105    [WmiMethodId(42), Implemented, Description("Set G-Sync Status")] void SetGSyncStatus ([in, Description("Set G-Sync Status")] UINT32 Data);
106    [WmiMethodId(43), Implemented, Description("Support Smart Fan feature")] void IsSupportSmartFan ([out, Description("Support Smart Fan feature")] UINT32 Data);
107    [WmiMethodId(44), Implemented, Description("Set Smart Fan Mode")] void SetSmartFanMode ([in, Description("Set Smart Fan Mode")] UINT32 Data);
108    [WmiMethodId(45), Implemented, Description("Get Smart Fan Mode")] void GetSmartFanMode ([out, Description("Get Smart Fan Mode")] UINT32 Data);
109    [WmiMethodId(46), Implemented, Description("Get Smart Fan Setting Mode")] void GetSmartFanSetting ([out, Description("Get Smart Setting Mode")] UINT32 Data);
110    [WmiMethodId(47), Implemented, Description("Get Power Charge Mode")] void GetPowerChargeMode ([out, Description("Get Power Charge Mode")] UINT32 Data);
111    [WmiMethodId(48), Implemented, Description("Get Gaming Product Info")] void GetProductInfo ([out, Description("Get Gaming Product Info")] UINT32 Data);
112    [WmiMethodId(49), Implemented, Description("Over Drive feature capability")] void IsSupportOD ([out, Description("Over Drive feature capability")] UINT32 Data);
113    [WmiMethodId(50), Implemented, Description("Get Over Drive status")] void GetODStatus ([out, Description("Get Over Drive status")] UINT32 Data);
114    [WmiMethodId(51), Implemented, Description("Set Over Drive status")] void SetODStatus ([in, Description("Set Over Drive status")] UINT32 Data);
115    [WmiMethodId(52), Implemented, Description("Set Light Control Owner")] void SetLightControlOwner ([in, Description("Set Light Control Owner")] UINT32 Data);
116    [WmiMethodId(53), Implemented, Description("Set DDS Control Owner")] void SetDDSControlOwner ([in, Description("Set DDS Control Owner")] UINT32 Data);
117    [WmiMethodId(54), Implemented, Description("Get the flag of restore OC value")] void IsRestoreOCValue ([in, Description("Clean this flag")] UINT32 idx, [out, Description("Restore oc value flag")] UINT32 Data);
118    [WmiMethodId(55), Implemented, Description("Get Real Thremal Mode")] void GetThermalMode ([out, Description("Real Thremal Mode")] UINT32 Data);
119    [WmiMethodId(56), Implemented, Description("Get the OC switch status in BIOS")] void GetBIOSOCMode ([out, Description("OC Mode")] UINT32 Data);
120    [WmiMethodId(59), Implemented, Description("Get hardware info support version")] void GetHardwareInfoSupportVersion ([out, Description("version")] UINT32 Data);
121    [WmiMethodId(60), Implemented, Description("Get Cpu core 0 max frequency")] void GetCpuFrequency ([out, Description("frequency")] UINT32 Data);
122    [WmiMethodId(62), Implemented, Description("Check the Adapter type fit for OC")] void IsACFitForOC ([out, Description("AC check result")] UINT32 Data);
123    [WmiMethodId(63), Implemented, Description("Is support IGPU mode")] void IsSupportIGPUMode ([out, Description("IGPU modes")] UINT32 Data);
124    [WmiMethodId(64), Implemented, Description("Get IGPU Mode Status")] void GetIGPUModeStatus([out, Description("IGPU Mode Status")] UINT32 Data);
125    [WmiMethodId(65), Implemented, Description("Set IGPU Mode")] void SetIGPUModeStatus([in, Description("IGPU Mode")] UINT32 mode, [out, Description("return code")] UINT32 Data);
126    [WmiMethodId(66), Implemented, Description("Notify DGPU Status")] void NotifyDGPUStatus([in, Description("DGPU status")] UINT32 status, [out, Description("return code")] UINT32 Data);
127    [WmiMethodId(67), Implemented, Description("Is changed Y log")] void IsChangedYLog([out, Description("Is changed Y Log")] UINT32 Data);
128    [WmiMethodId(68), Implemented, Description("Get DGPU Hardwawre ID")] void GetDGPUHWId([out, Description("Get DGPU Hardware ID")] string Data);
129  };
130
131  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of CPU OC parameter list"), guid("{B7F3CA0A-ACDC-42D2-9217-77C6C628FBD2}")]
132  class LENOVO_GAMEZONE_CPU_OC_DATA {
133    [key, read] string InstanceName;
134    [read] boolean Active;
135
136    [WmiDataId(1), read, Description("OC tune id.")] uint32 Tuneid;
137    [WmiDataId(2), read, Description("Default value.")] uint32 DefaultValue;
138    [WmiDataId(3), read, Description("OC Value.")] uint32 OCValue;
139    [WmiDataId(4), read, Description("Min Value.")] uint32 MinValue;
140    [WmiDataId(5), read, Description("Max Value.")] uint32 MaxValue;
141    [WmiDataId(6), read, Description("Scale Value.")] uint32 ScaleValue;
142    [WmiDataId(7), read, Description("OC Order id.")] uint32 OCOrderid;
143    [WmiDataId(8), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
144    [WmiDataId(9), read, Description("Delay time in ms.")] uint32 Interval;
145  };
146
147  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of GPU OC parameter list"), guid("{887B54E2-DDDC-4B2C-8B88-68A26A8835D0}")]
148  class LENOVO_GAMEZONE_GPU_OC_DATA {
149    [key, read] string InstanceName;
150    [read] boolean Active;
151
152    [WmiDataId(1), read, Description("P-State ID.")] uint32 PStateID;
153    [WmiDataId(2), read, Description("CLOCK ID.")] uint32 ClockID;
154    [WmiDataId(3), read, Description("Default value.")] uint32 defaultvalue;
155    [WmiDataId(4), read, Description("OC Offset freqency.")] uint32 OCOffsetFreq;
156    [WmiDataId(5), read, Description("OC Min offset value.")] uint32 OCMinOffset;
157    [WmiDataId(6), read, Description("OC Max offset value.")] uint32 OCMaxOffset;
158    [WmiDataId(7), read, Description("OC Offset Scale.")] uint32 OCOffsetScale;
159    [WmiDataId(8), read, Description("OC Order id.")] uint32 OCOrderid;
160    [WmiDataId(9), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
161  };
162
163  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Fancooling finish event"), guid("{BC72A435-E8C1-4275-B3E2-D8B8074ABA59}")]
164  class LENOVO_GAMEZONE_FAN_COOLING_EVENT: WMIEvent {
165    [key, read] string InstanceName;
166    [read] boolean Active;
167
168    [WmiDataId(1), read, Description("Fancooling clean finish event")] uint32 EventId;
169  };
170
171  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan mode change event"), guid("{D320289E-8FEA-41E0-86F9-611D83151B5F}")]
172  class LENOVO_GAMEZONE_SMART_FAN_MODE_EVENT: WMIEvent {
173    [key, read] string InstanceName;
174    [read] boolean Active;
175
176    [WmiDataId(1), read, Description("Smart Fan Mode change event")] uint32 mode;
177    [WmiDataId(2), read, Description("version of FN+Q")] uint32 version;
178  };
179
180  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan setting mode change event"), guid("{D320289E-8FEA-41E1-86F9-611D83151B5F}")]
181  class LENOVO_GAMEZONE_SMART_FAN_SETTING_EVENT: WMIEvent {
182    [key, read] string InstanceName;
183    [read] boolean Active;
184
185    [WmiDataId(1), read, Description("Smart Fan Setting mode change event")] uint32 mode;
186  };
187
188  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("POWER CHARGE MODE Change EVENT"), guid("{D320289E-8FEA-41E0-86F9-711D83151B5F}")]
189  class LENOVO_GAMEZONE_POWER_CHARGE_MODE_EVENT: WMIEvent {
190    [key, read] string InstanceName;
191    [read] boolean Active;
192
193    [WmiDataId(1), read, Description("POWER CHARGE MODE Change EVENT")] uint32 mode;
194  };
195
196  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Thermal Mode Real Mode change event"), guid("{D320289E-8FEA-41E0-86F9-911D83151B5F}")]
197  class LENOVO_GAMEZONE_THERMAL_MODE_EVENT: WMIEvent {
198    [key, read] string InstanceName;
199    [read] boolean Active;
200
201    [WmiDataId(1), read, Description("Thermal Mode Real Mode")] uint32 mode;
202  };
~/ Read-only file preview.