Re: [PATCH v4 1/1] platform/x86: add Acer battery control driver

Armin Wolf <[email protected]>
Newsgroups org.kernel.vger.platform-driver-x86
Message-ID <[email protected]>
Am 06.08.26 um 17:18 schrieb Jelle van der Waa:

> Hi,
>
> On 07/06/2026 22:46, Armin Wolf wrote:
>> Am 31.05.26 um 11:05 schrieb Jelle van der Waa:
>>
>>> Some Acer laptops can configure battery related features through Acer
>>> Care Center on Windows. This driver uses the power supply extension to
>>> set a battery charge limit and exposes the battery
>>> temperature.
>>>
>>> This driver is based on the existing acer-wmi-battery project on GitHub
>>> and was tested on an Acer Aspire A315-510P.
>>
>> Good work, i tested it on my old Aspire notebook (v1 interface) and i 
>> can confirm
>> that the temperature reading and DMI whitelist works as intended.
>>
>> I found a couple of minor issues, once those are addressed:
>>
>> Reviewed-by: Armin Wolf <[email protected]>
>
> Sorry for the long hiatus, I send a v5 yesterday and forgot to include 
> this. If it is needed to send a v6 I will include it and send that as 
> soon as possible.

No problem, just include this tag with the v6.

Thanks,
Armin Wolf

>> [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), 
>> Description("Class used to control smart battery, Version 2.88"), 
>> guid("{79772EC5-04B1-4bfd-843C-61E7F77B6CC9}")]
>> class BatteryControl {
>>    [key, read] string InstanceName;
>>    [read] boolean Active;
>>
>>    [WmiMethodId(19), Implemented, read, write, Description("Get 
>> battery Information Interface.")] void GetBattInfoInterface([in] 
>> uint32 uBatteryInfoIndex, [in] uint32 uBatteryNo, [out] uint32 uReturn);
>>    [WmiMethodId(20), Implemented, read, write, Description("Get 
>> Battery Health Control Status.")] void 
>> GetBatteryHealthControlStatus([in] uint8 uBatteryNo, [in] uint8 
>> uFunctionQuery, [in] uint8 uReserved[2], [out] uint8 uFunctionList, 
>> [out] uint8 uReturn[2], [out] uint8 uFunctionStatus[5]);
>>    [WmiMethodId(21), Implemented, read, write, Description("Set 
>> Battery Health Control.")] void SetBatteryHealthControl([in] uint8 
>> uBatteryNo, [in] uint8 uFunctionMask, [in] uint8 uFunctionStatus, 
>> [in] uint8 uReservedIn[5], [out] uint16 uReturn, [out] uint16 
>> uReservedOut);
>>    [WmiMethodId(22), Implemented, read, write, Description("Get 
>> Battery Function Data.")] void GetBatteryFunctionData([in] uint8 
>> uFunctionMask, [in] uint8 uReservedIn[3], [out] uint8 uReturnCode[2], 
>> [out] uint8 uBACStartTime[2], [out] uint8 uBACStopTime[2], [out] 
>> uint8 uBACStatus, [out] uint8 uReservedOut[9]);
>>    [WmiMethodId(23), Implemented, read, write, Description("Set 
>> Battery Function Data.")] void SetBatteryFunctionData([in] uint8 
>> uFunctionMask, [in] uint8 uBACSwitch, [in] uint8 uReservedIn[6], 
>> [out] uint16 uReturnCode, [out] uint8 uReservedOut[2]);
>> };
>>
>> I suggest you write a tiny bit of documentation under 
>> Documentation/wmi/ devices/ using this MOF description.
>> This way future developers can better understand the WMI interface 
>> used by this driver.
>
> Thanks for poking me to write this, this was the first time writing a 
> WMI driver and writing a bit of documentation definitively made 
> everything click in my head.
>
> It also sparked my curiosity. I know you added the temperature reading 
> and referenced "Smart Battery Data Specification", did you try any of 
> the other fields (such as manufacturer?)  [1]
>
> [1] https://sbs-forum.org/specs/sbdat110.pdf
>
> Thanks for the review,
>
> Jelle van der Waa
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.