lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a566e56b-c5f5-456e-92e3-b0887b0f6b62@gmx.de>
Date: Tue, 6 May 2025 14:12:45 +0200
From: Armin Wolf <W_Armin@....de>
To: ALOK TIWARI <alok.a.tiwari@...cle.com>,
 "Derek J. Clark" <derekjohn.clark@...il.com>,
 Hans de Goede <hdegoede@...hat.com>,
 Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
Cc: Jonathan Corbet <corbet@....net>, Mario Limonciello <superm1@...nel.org>,
 Luke Jones <luke@...nes.dev>, Xino Ni <nijs1@...ovo.com>,
 Zhixin Zhang <zhangzx36@...ovo.com>, Mia Shao <shaohz1@...ovo.com>,
 Mark Pearson <mpearson-lenovo@...ebb.ca>,
 "Pierre-Loup A . Griffais" <pgriffais@...vesoftware.com>,
 "Cody T . -H . Chiu" <codyit@...il.com>, John Martens <johnfanv2@...il.com>,
 platform-driver-x86@...r.kernel.org, linux-doc@...r.kernel.org,
 linux-kernel@...r.kernel.org, Mario Limonciello <mario.limonciello@....com>
Subject: Re: [PATCH v8 1/6] platform/x86: Add lenovo-wmi-* driver
 Documentation

Am 06.05.25 um 12:49 schrieb ALOK TIWARI:

>
>
> On 05-05-2025 06:36, Derek J. Clark wrote:
>> Adds documentation for new lenovo-wmi drivers.
>>
>> Reviewed-by: Armin Wolf <W_Armin@....de>
>> Reviewed-by: Mario Limonciello <mario.limonciello@....com>
>> Signed-off-by: Derek J. Clark <derekjohn.clark@...il.com>
>> ---
> ...
>> +
>> +
>> +WMI interface description
>> +=========================
>> +
>> +The WMI interface description can be decoded from the embedded 
>> binary MOF (bmof)
>> +data using the `bmfdec 
>> <https://urldefense.com/v3/__https://github.com/pali/bmfdec__;!!ACWV5N9M2RV99hQ!MsBEzFjDFpZkeq1j7_77aBEv31FIW_V_vPvnyFGNSL_ptLYWAYFj1UMisJvhsTGRq3_lh5eh5RpYWjdlZUKTA0UZ9jO_$ 
>> >`_ utility:
>> +
>> +::
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("LENOVO_GAMEZONE_DATA class"), 
>> guid("{887B54E3-DDDC-4B2C-8B88-68A26A8835D0}")]
>> +  class LENOVO_GAMEZONE_DATA {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiMethodId(4), Implemented, Description("Is SupportGpu 
>> OverClock")] void IsSupportGpuOC([out, Description("Is SupportGpu 
>> OverClock")] uint32 Data);
>> +    [WmiMethodId(11), Implemented, Description("Get AslCode 
>> Version")] void GetVersion ([out, Description("AslCode version")] 
>> UINT32 Data);
>> +    [WmiMethodId(12), Implemented, Description("Fan cooling 
>> capability")] void IsSupportFanCooling([out, Description("Fan cooling 
>> capability")] UINT32 Data);
>> +    [WmiMethodId(13), Implemented, Description("Set Fan cooling 
>> on/off")] void SetFanCooling ([in, Description("Set Fan cooling 
>> on/off")] UINT32 Data);
>> +    [WmiMethodId(14), Implemented, Description("cpu oc capability")] 
>> void IsSupportCpuOC ([out, Description("cpu oc capability")] UINT32 
>> Data);
>> +    [WmiMethodId(15), Implemented, Description("bios has overclock 
>> capability")] void IsBIOSSupportOC ([out, Description("bios has 
>> overclock capability")] UINT32 Data);
>> +    [WmiMethodId(16), Implemented, Description("enable or disable 
>> overclock in bios")] void SetBIOSOC ([in, Description("enable or 
>> disable overclock in bios")] UINT32 Data);
>> +    [WmiMethodId(18), Implemented, Description("Get CPU 
>> temperature")] void GetCPUTemp ([out, Description("Get CPU 
>> temperature")] UINT32 Data);
>> +    [WmiMethodId(19), Implemented, Description("Get GPU 
>> temperature")] void GetGPUTemp ([out, Description("Get GPU 
>> temperature")] UINT32 Data);
>> +    [WmiMethodId(20), Implemented, Description("Get Fan cooling 
>> on/off status")] void GetFanCoolingStatus ([out, Description("Get Fan 
>> cooling on/off status")] UINT32 Data);
>> +    [WmiMethodId(21), Implemented, Description("EC support disable 
>> windows key capability")] void IsSupportDisableWinKey ([out, 
>> Description("EC support disable windows key capability")] UINT32 Data);
>> +    [WmiMethodId(22), Implemented, Description("Set windows key 
>> disable/enable")] void SetWinKeyStatus ([in, Description("Set windows 
>> key disable/enable")] UINT32 Data);
>> +    [WmiMethodId(23), Implemented, Description("Get windows key 
>> disable/enable status")] void GetWinKeyStatus ([out, Description("Get 
>> windows key disable/enable status")] UINT32 Data);
>> +    [WmiMethodId(24), Implemented, Description("EC support disable 
>> touchpad capability")] void IsSupportDisableTP ([out, Description("EC 
>> support disable touchpad capability")] UINT32 Data);
>> +    [WmiMethodId(25), Implemented, Description("Set touchpad 
>> disable/enable")] void SetTPStatus ([in, Description("Set touchpad 
>> disable/enable")] UINT32 Data);
>> +    [WmiMethodId(26), Implemented, Description("Get touchpad 
>> disable/enable status")] void GetTPStatus ([out, Description("Get 
>> touchpad disable/enable status")] UINT32 Data);
>> +    [WmiMethodId(30), Implemented, Description("Get Keyboard feature 
>> list")] void GetKeyboardfeaturelist ([out, Description("Get Keyboard 
>> feature list")] UINT32 Data);
>> +    [WmiMethodId(31), Implemented, Description("Get Memory OC 
>> Information")] void GetMemoryOCInfo ([out, Description("Get Memory OC 
>> Information")] UINT32 Data);
>> +    [WmiMethodId(32), Implemented, Description("Water Cooling 
>> feature capability")] void IsSupportWaterCooling ([out, 
>> Description("Water Cooling feature capability")] UINT32 Data);
>> +    [WmiMethodId(33), Implemented, Description("Set Water Cooling 
>> status")] void SetWaterCoolingStatus ([in, Description("Set Water 
>> Cooling status")] UINT32 Data);
>> +    [WmiMethodId(34), Implemented, Description("Get Water Cooling 
>> status")] void GetWaterCoolingStatus ([out, Description("Get Water 
>> Cooling status")] UINT32 Data);
>> +    [WmiMethodId(35), Implemented, Description("Lighting feature 
>> capability")] void IsSupportLightingFeature ([out, 
>> Description("Lighting feature capability")] UINT32 Data);
>> +    [WmiMethodId(36), Implemented, Description("Set keyboard light 
>> off or on to max")] void SetKeyboardLight ([in, Description("keyboard 
>> light off or on switch")] UINT32 Data);
>> +    [WmiMethodId(37), Implemented, Description("Get keyboard light 
>> on/off status")] void GetKeyboardLight ([out, Description("Get 
>> keyboard light on/off status")] UINT32 Data);
>> +    [WmiMethodId(38), Implemented, Description("Get Macrokey scan 
>> code")] void GetMacrokeyScancode ([in, Description("Macrokey index")] 
>> UINT32 idx, [out, Description("Scan code")] UINT32 scancode);
>> +    [WmiMethodId(39), Implemented, Description("Get Macrokey 
>> count")] void GetMacrokeyCount ([out, Description("Macrokey count")] 
>> UINT32 Data);
>> +    [WmiMethodId(40), Implemented, Description("Support G-Sync 
>> feature")] void IsSupportGSync ([out, Description("Support G-Sync 
>> feature")] UINT32 Data);
>> +    [WmiMethodId(41), Implemented, Description("Get G-Sync Status")] 
>> void GetGSyncStatus ([out, Description("Get G-Sync Status")] UINT32 
>> Data);
>> +    [WmiMethodId(42), Implemented, Description("Set G-Sync Status")] 
>> void SetGSyncStatus ([in, Description("Set G-Sync Status")] UINT32 
>> Data);
>> +    [WmiMethodId(43), Implemented, Description("Support Smart Fan 
>> feature")] void IsSupportSmartFan ([out, Description("Support Smart 
>> Fan feature")] UINT32 Data);
>> +    [WmiMethodId(44), Implemented, Description("Set Smart Fan 
>> Mode")] void SetSmartFanMode ([in, Description("Set Smart Fan Mode")] 
>> UINT32 Data);
>> +    [WmiMethodId(45), Implemented, Description("Get Smart Fan 
>> Mode")] void GetSmartFanMode ([out, Description("Get Smart Fan 
>> Mode")] UINT32 Data);
>> +    [WmiMethodId(46), Implemented, Description("Get Smart Fan 
>> Setting Mode")] void GetSmartFanSetting ([out, Description("Get Smart 
>> Setting Mode")] UINT32 Data);
>> +    [WmiMethodId(47), Implemented, Description("Get Power Charge 
>> Mode")] void GetPowerChargeMode ([out, Description("Get Power Charge 
>> Mode")] UINT32 Data);
>> +    [WmiMethodId(48), Implemented, Description("Get Gaming Product 
>> Info")] void GetProductInfo ([out, Description("Get Gaming Product 
>> Info")] UINT32 Data);
>> +    [WmiMethodId(49), Implemented, Description("Over Drive feature 
>> capability")] void IsSupportOD ([out, Description("Over Drive feature 
>> capability")] UINT32 Data);
>> +    [WmiMethodId(50), Implemented, Description("Get Over Drive 
>> status")] void GetODStatus ([out, Description("Get Over Drive 
>> status")] UINT32 Data);
>> +    [WmiMethodId(51), Implemented, Description("Set Over Drive 
>> status")] void SetODStatus ([in, Description("Set Over Drive 
>> status")] UINT32 Data);
>> +    [WmiMethodId(52), Implemented, Description("Set Light Control 
>> Owner")] void SetLightControlOwner ([in, Description("Set Light 
>> Control Owner")] UINT32 Data);
>> +    [WmiMethodId(53), Implemented, Description("Set DDS Control 
>> Owner")] void SetDDSControlOwner ([in, Description("Set DDS Control 
>> Owner")] UINT32 Data);
>> +    [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);
>> +    [WmiMethodId(55), Implemented, Description("Get Real Thremal 
>> Mode")] void GetThermalMode ([out, Description("Real Thremal Mode")] 
>> UINT32 Data);
>
> Thremal -> Thermal

Those spelling mistakes where already present inside the original MOF description of the WMI object, so we have to ignore
them in order to not distort the original interface description.

>
>> +    [WmiMethodId(56), Implemented, Description("Get the OC switch 
>> status in BIOS")] void GetBIOSOCMode ([out, Description("OC Mode")] 
>> UINT32 Data);
>
> "Get the BIOS OC switch status"

Same as above.

>
>> +    [WmiMethodId(59), Implemented, Description("Get hardware info 
>> support version")] void GetHardwareInfoSupportVersion ([out, 
>> Description("version")] UINT32 Data);
>> +    [WmiMethodId(60), Implemented, Description("Get Cpu core 0 max 
>> frequency")] void GetCpuFrequency ([out, Description("frequency")] 
>> UINT32 Data);
>> +    [WmiMethodId(62), Implemented, Description("Check the Adapter 
>> type fit for OC")] void IsACFitForOC ([out, Description("AC check 
>> result")] UINT32 Data);
>> +    [WmiMethodId(63), Implemented, Description("Is support IGPU 
>> mode")] void IsSupportIGPUMode ([out, Description("IGPU modes")] 
>> UINT32 Data);
>> +    [WmiMethodId(64), Implemented, Description("Get IGPU Mode 
>> Status")] void GetIGPUModeStatus([out, Description("IGPU Mode 
>> Status")] UINT32 Data);
>> +    [WmiMethodId(65), Implemented, Description("Set IGPU Mode")] 
>> void SetIGPUModeStatus([in, Description("IGPU Mode")] UINT32 mode, 
>> [out, Description("return code")] UINT32 Data);
>> +    [WmiMethodId(66), Implemented, Description("Notify DGPU 
>> Status")] void NotifyDGPUStatus([in, Description("DGPU status")] 
>> UINT32 status, [out, Description("return code")] UINT32 Data);
>> +    [WmiMethodId(67), Implemented, Description("Is changed Y log")] 
>> void IsChangedYLog([out, Description("Is changed Y Log")] UINT32 Data);
>> +    [WmiMethodId(68), Implemented, Description("Get DGPU Hardwawre 
>> ID")] void GetDGPUHWId([out, Description("Get DGPU Hardware ID")] 
>> string Data);
>
> Hardwawre -> Hardware
>
> can we Use value or status instead of generic Data where applicable to 
> convey meaning better.?

Same as above.

>
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Definition of CPU OC parameter list"), 
>> guid("{B7F3CA0A-ACDC-42D2-9217-77C6C628FBD2}")]
>> +  class LENOVO_GAMEZONE_CPU_OC_DATA {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("OC tune id.")] uint32 Tuneid;
>> +    [WmiDataId(2), read, Description("Default value.")] uint32 
>> DefaultValue;
>> +    [WmiDataId(3), read, Description("OC Value.")] uint32 OCValue;
>> +    [WmiDataId(4), read, Description("Min Value.")] uint32 MinValue;
>> +    [WmiDataId(5), read, Description("Max Value.")] uint32 MaxValue;
>> +    [WmiDataId(6), read, Description("Scale Value.")] uint32 
>> ScaleValue;
>> +    [WmiDataId(7), read, Description("OC Order id.")] uint32 OCOrderid;
>> +    [WmiDataId(8), read, Description("NON-OC Order id.")] uint32 
>> NOCOrderid;
>> +    [WmiDataId(9), read, Description("Delay time in ms.")] uint32 
>> Interval;
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Definition of GPU OC parameter list"), 
>> guid("{887B54E2-DDDC-4B2C-8B88-68A26A8835D0}")]
>> +  class LENOVO_GAMEZONE_GPU_OC_DATA {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("P-State ID.")] uint32 PStateID;
>> +    [WmiDataId(2), read, Description("CLOCK ID.")] uint32 ClockID;
>> +    [WmiDataId(3), read, Description("Default value.")] uint32 
>> defaultvalue;
>> +    [WmiDataId(4), read, Description("OC Offset freqency.")] uint32 
>> OCOffsetFreq;
>> +    [WmiDataId(5), read, Description("OC Min offset value.")] uint32 
>> OCMinOffset;
>> +    [WmiDataId(6), read, Description("OC Max offset value.")] uint32 
>> OCMaxOffset;
>> +    [WmiDataId(7), read, Description("OC Offset Scale.")] uint32 
>> OCOffsetScale;
>> +    [WmiDataId(8), read, Description("OC Order id.")] uint32 OCOrderid;
>> +    [WmiDataId(9), read, Description("NON-OC Order id.")] uint32 
>> NOCOrderid;
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Fancooling finish event"), 
>> guid("{BC72A435-E8C1-4275-B3E2-D8B8074ABA59}")]
>> +  class LENOVO_GAMEZONE_FAN_COOLING_EVENT: WMIEvent {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("Fancooling clean finish 
>> event")] uint32 EventId;
>
> Fancooling -> Fan cooling
> "Fan cooling completion event"
> "Fan cooling process finished event ID"

Same as above.

Thanks,
Armin Wolf

>
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Smart Fan mode change event"), 
>> guid("{D320289E-8FEA-41E0-86F9-611D83151B5F}")]
>> +  class LENOVO_GAMEZONE_SMART_FAN_MODE_EVENT: WMIEvent {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("Smart Fan Mode change event")] 
>> uint32 mode;
>> +    [WmiDataId(2), read, Description("version of FN+Q")] uint32 
>> version;
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Smart Fan setting mode change event"), 
>> guid("{D320289E-8FEA-41E1-86F9-611D83151B5F}")]
>> +  class LENOVO_GAMEZONE_SMART_FAN_SETTING_EVENT: WMIEvent {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("Smart Fan Setting mode change 
>> event")] uint32 mode;
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("POWER CHARGE MODE Change EVENT"), 
>> guid("{D320289E-8FEA-41E0-86F9-711D83151B5F}")]
>> +  class LENOVO_GAMEZONE_POWER_CHARGE_MODE_EVENT: WMIEvent {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("POWER CHARGE MODE Change 
>> EVENT")] uint32 mode;
>> +  };
>> +
>> +  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Thermal Mode Real Mode change event"), 
>> guid("{D320289E-8FEA-41E0-86F9-911D83151B5F}")]
>> +  class LENOVO_GAMEZONE_THERMAL_MODE_EVENT: WMIEvent {
>> +    [key, read] string InstanceName;
>> +    [read] boolean Active;
>> +
>> +    [WmiDataId(1), read, Description("Thermal Mode Real Mode")] 
>> uint32 mode;
>> +  };
>> diff --git a/Documentation/wmi/devices/lenovo-wmi-other.rst 
>> b/Documentation/wmi/devices/lenovo-wmi-other.rst
>> new file mode 100644
>> index 000000000000..d7928b8dfb4b
>> --- /dev/null
>> +++ b/Documentation/wmi/devices/lenovo-wmi-other.rst
>> @@ -0,0 +1,108 @@
>> +.. 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://urldefense.com/v3/__https://github.com/pali/bmfdec__;!!ACWV5N9M2RV99hQ!MsBEzFjDFpZkeq1j7_77aBEv31FIW_V_vPvnyFGNSL_ptLYWAYFj1UMisJvhsTGRq3_lh5eh5RpYWjdlZUKTA0UZ9jO_$ 
>> >`_ 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[];
>> +  };
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 1afd30d00aec..675f4b26426d 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -13158,6 +13158,13 @@ S:    Maintained
>>   W: 
>> https://urldefense.com/v3/__http://legousb.sourceforge.net/__;!!ACWV5N9M2RV99hQ!MsBEzFjDFpZkeq1j7_77aBEv31FIW_V_vPvnyFGNSL_ptLYWAYFj1UMisJvhsTGRq3_lh5eh5RpYWjdlZUKTA1y38Zxx$
>>   F:    drivers/usb/misc/legousbtower.c
>>   +LENOVO WMI DRIVERS
>> +M:    Derek J. Clark <derekjohn.clark@...il.com>
>> +L:    platform-driver-x86@...r.kernel.org
>> +S:    Maintained
>> +F:    Documentation/wmi/devices/lenovo-wmi-gamezone.rst
>> +F:    Documentation/wmi/devices/lenovo-wmi-other.rst
>> +
>>   LENOVO WMI HOTKEY UTILITIES DRIVER
>>   M:    Jackie Dong <xy-jackie@....com>
>>   L:    platform-driver-x86@...r.kernel.org
>
> Reviewed-by: Alok Tiwari <alok.a.tiwari@...cle.com>
>
> Thanks,
> Alok
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ