• Srinivas Pandruvada's avatar
    ACPI / fan: Fix error reading cur_state · 84baf172
    Srinivas Pandruvada authored
    On some platforms with ACPI4 variable speed fan, reading cur_state from
    cooling device returns "invalid value" error. This confuses user space
    applications.
    
    This issue occurs as the current driver doesn't take account of
    "FineGrainControl" from _FIF(Fan Information). When the "FineGrainControl"
    is set, _FSL(FSL Set Level) takes argument as a percent, which doesn't
    have to match from any control value from _FPS(Fan Performance States).
    It is also possible that the Fan is not actually running at the requested
    speed returning a lower speed.
    On some platforms the BIOS is setting fan speed to a level during boot,
    which will not have an exact match to _FPS control values. The current
    implementation will treat this level as invalid value.
    
    The simple change is to atleast return state corresponding to a maximum
    control value in the _FPS compared to the current level.
    Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    84baf172
fan.c 10.6 KB