On Thu, Apr 12, 2018 at 4:01 AM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > 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 c68f0676ef7d ("ACPI / battery: Add quirk for Asus > GL502VSK and UX305LA"), a previous fix for this which was reverted. Reviewed-by: Daniel Drake <drake@xxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html