• Luke D. Jones's avatar
    platform/x86: asus-wmi: Add support for custom fan curves · 0f0ac158
    Luke D. Jones authored
    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: default avatarLuke D. Jones <luke@ljones.dev>
    Link: https://lore.kernel.org/r/20211024033705.5595-2-luke@ljones.devReviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    0f0ac158
asus-wmi.c 96 KB