• Srinivas Pandruvada's avatar
    ACPI: fan: Expose fan performance state information · d19e470b
    Srinivas Pandruvada authored
    When _FPS indicates variable speed fan support, the thermal cooling
    device for fan shows max performance state count as "max_state"
    (greater than or equal to 1).
    
    But the thermal cooling device doesn't expose the properties of each
    performance state. This is not enough for smart fan control user
    space software, which also considers speed, power and noise level.
    
    This change exposes the properties of the fan performance states
    in the sysfs directory of the ACPI device representing the fan,
    that is
    
    /sys/bus/acpi/devices/devices/INT3404:00
    
    or
    
    /sys/bus/platform/devices/PNP0C0B:00.
    
    For example:
    
    $ ls /sys/bus/acpi/devices/INT3404\:00
    description  path           state0   state11  state4  state7  status
    hid          physical_node  state1   state2   state5  state8  subsystem
    modalias     power          state10  state3   state6  state9  uevent
    uid          wakeup
    
    where each state* attribute lists the properties of a fan performance
    state in the following format:
    
    control_percent:trip_point:speed_rpm:noise_level_mdb:power_mw
    
    $ cat /sys/bus/acpi/devices/INT3404\:00/state10
    95:0:11600:47500:4500
    
    as documented in
    
    Documentation/admin-guide/acpi/fan_performance_states.rst
    
    While at it, return the correct error code from acpi_fan_probe()
    when acpi_fan_get_fps() or acpi_fan_get_fif() fails.
    Suggested-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    [ rjw: Subject, changelog, documentation ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d19e470b
fan.c 12.1 KB