OSDN Git Service

platform/x86: asus-wmi: Add support for custom fan curves
authorLuke D. Jones <luke@ljones.dev>
Sun, 24 Oct 2021 03:37:05 +0000 (16:37 +1300)
committerHans de Goede <hdegoede@redhat.com>
Tue, 16 Nov 2021 09:56:53 +0000 (10:56 +0100)
commit0f0ac158d28ff78e75c334e869b1cb8e69372a1f
tree7a7b07fc96337a8f9978e67e1640c319efec840b
parent79f960e29cfc87db324479ef982a3f97025328dc
platform/x86: asus-wmi: Add support for custom fan curves

Add support for custom fan curves found on some ASUS ROG laptops.

These laptops have the ability to set a custom curve for the CPU
and GPU fans via two ACPI methods.

This patch adds two pwm<N> attributes to the hwmon sysfs,
pwm1 for CPU fan, pwm2 for GPU fan. Both are under the hwmon of the
name `asus_custom_fan_curve`. There is no safety check of the set
fan curves - this must be done in userspace.

The fans have settings [1,2,3] under pwm<N>_enable:
1. Enable and write settings out
2. Disable and use factory fan mode
3. Same as 2, additionally restoring default factory curve.

Use of 2 means that the curve the user has set is still stored and
won't be erased, but the laptop will be using its default auto-fan
mode. Re-enabling the manual mode then activates the curves again.

Notes:
- pwm<N>_enable = 0 is an invalid setting.
- pwm is actually a percentage and is scaled on writing to device.

Signed-off-by: Luke D. Jones <luke@ljones.dev>
Link: https://lore.kernel.org/r/20211024033705.5595-2-luke@ljones.dev
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/asus-wmi.c
include/linux/platform_data/x86/asus-wmi.h