• Rafael J. Wysocki's avatar
    ACPI / PM: Make __acpi_bus_get_power() cover D3cold correctly · 38c92fff
    Rafael J. Wysocki authored
    After recent changes of the ACPI device power states definitions, if
    power resources are not used for the device's power management, the
    state returned by __acpi_bus_get_power() cannot exceed D3hot, because
    the return values of _PSC are 0 through 3.  However, if the _PR3
    method is not present for the device and _PS3 returns 3, we have to
    assume that the device is in D3cold, so the value returned by
    __acpi_bus_get_power() in that case should be 4.
    
    Similarly, acpi_power_get_inferred_state() should take the power
    resources for the D3hot state into account in general, so that it
    can return 3 if those resources are "on" or 4 (D3cold) otherwise.
    
    Fix the the above two issues and make sure that if both _PSC and
    _PR3 are present for the device, the power resources listed by _PR3
    will be used to determine if the number 3 returned by _PSC is meant
    to represent D3cold or D3hot.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    38c92fff
power.c 19.9 KB