• H
    ACPI / battery: Add handling for devices which wrongly report discharging state · 19fffc84
    Hans de Goede 提交于
    On quite a few devices the battery code in the ACPI tables is buggy and
    first checks the charging status bits of the charger-IC, and if those
    report not charging it will report discharging, without looking at the
    presence of AC power or at the battery dis(charge) current from the
    fuel-gauge.
    
    This causes the wrong status to be reported for the battery in the
    following quite common scenario:
    
    1) Plug in charger while battery is say half full, battery starts
    charging, charging state bits indicate: pre-charge or fast-charge,
    ACPI reported battery status is ok
    
    2) When fully charged charging state bits indicate: end-of-charge,
    ACPI reported battery status is ok
    
    3) unplug the charger, wait 1 minute, replug. Now the battery voltage is
    still above the start-charging threshold, so the charger will not start
    charging to avoid wrecking the battery by repeatedly recharging the last 1%
    capacity. The charger IC charging state bits now are all 0 (not-charging)
    and the broken ACPI code wrongly translate this to "discharging" and ends
    up setting the ACPI_BATTERY_STATE_DISCHARGING bit in its state field.
    
    Reporting this "not charging" state as discharging is confusing for users,
    making the user think his adapter/power-brick is broken or not properly
    plugged in.
    
    This commit adds a helper for handling the ACPI_BATTERY_STATE_DISCHARGING
    state. This helper checks if we're an AC and the current going out of the
    battery is 0 and in that case reports a status of "not charging" to
    userspace rather then "discharging".
    
    This replaces commit c68f0676 ("ACPI / battery: Add quirk for Asus
    GL502VSK and UX305LA"), a previous fix for this which was reverted.
    Signed-off-by: NHans de Goede <hdegoede@redhat.com>
    Reviewed-by: NDaniel Drake <drake@endlessm.com>
    Reviewed-by: NSebastian Reichel <sebastian.reichel@collabora.co.uk>
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    19fffc84
battery.c 44.3 KB