Re: [RFC PATCH 0/3] platform/x86: lenovo: Add Legion Go fan controls
From: Derek J. Clark
Date: Sun Aug 23 2026 - 16:08:32 EST
On August 23, 2026 12:32:02 PM PDT, Rong Zhang <i@xxxxxxxx> wrote:
>Hi Aditya,
>
>On Sat, 2026-08-22 at 03:17 +0530, Aditya Dash wrote:
>> Capability Data does not cover all fan controls on the Legion Go. Full
>> Speed uses a separate Other Mode feature, some firmware exposes an RPM
>> reading that Capability Data does not advertise,
>>
>
>"does not advertise"
>
>Really? Please dump capdata via debugfs and attach it.
>
>> and the custom fan table
>> uses a separate Fan Method WMI interface.
>>
>
>The hwmon part of lenovo-wmi-other was done by me. Please CC me in your
>next revision.
>
Hi Rong,
I'd ack if you wanted to add yourself as a maintainer of the Lenovo drivers so you get picked up by the kernel scripts. Otherwise people won't know to Cc you.
>> Patches 1 and 2 add Full Speed and the RPM fallback to the existing HWMON
>> device. Patch 3 adds a Fan Method driver and attaches the ten curve points
>> to that device when both WMI interfaces belong to the same provider. Other
>> Mode continues to work without Fan Method.
>>
>> The open question is how the firmware control range should map to HWMON.
>> On the tested Legion Go 8APU1, values from 0 through 115 produce the
>> observable fan response and correspond to Lenovo's 0 through 115 percent
>> range. Lenovo software shows 0 through 100 percent to the user, and 115
>> reaches the RPM observed in Full Speed mode. Firmware accepts values
>> through 255, but no RPM increase was observed above 115.
>
>This is what we've observed in Fan Test Data. We chose to enforce
>constraints according to it and relax it when users set an module
>parameter.
>
>>
>> This series keeps the native values unchanged and exposes the fixed
>> temperatures as read-only automatic points. Should the driver map the
>> effective 0 through 115 range to the standard HWMON 0 through 255 scale,
>> or keep the native firmware values unchanged?
>
>In your case, if there is no range data to query, I'd prefer enforcing 0-
>100 by default and relaxing it when appropriate range data is provided by
>module parameters or DMI table.
>
>The range should always map to hwmon pwm 0-255.
Concur on both counts.
>As far as I can recall, Derek once said that he planed to introduce fan
>curve support for Legion Go, so I think he has some helpful ideas.
I'll post a full review once I've had time to test and review the documentation again.
Cheers,
Derek
>Thanks,
>Rong
>
>>
>> Aditya Dash (3):
>> platform/x86: lenovo-wmi-other: Add Legion Go Full Speed control
>> platform/x86: lenovo-wmi-other: Add Legion Go fan RPM fallback
>> platform/x86: lenovo: Add Legion Go Fan Method curve driver
>>
>> .../wmi/devices/lenovo-wmi-fan-method.rst | 34 ++
>> .../wmi/devices/lenovo-wmi-other.rst | 14 +
>> MAINTAINERS | 1 +
>> drivers/platform/x86/lenovo/Kconfig | 11 +
>> drivers/platform/x86/lenovo/Makefile | 1 +
>> drivers/platform/x86/lenovo/wmi-fan-method.c | 380 ++++++++++++++++++
>> drivers/platform/x86/lenovo/wmi-other.c | 215 +++++++++-
>> 7 files changed, 649 insertions(+), 7 deletions(-)
>> create mode 100644 Documentation/wmi/devices/lenovo-wmi-fan-method.rst
>> create mode 100644 drivers/platform/x86/lenovo/wmi-fan-method.c
>>
>>
>> base-commit: aca39607c1734ed976fdd65deb75b3555a5a0326