ACPI: battery: Round capacity percengate to closest integer
authorshitao <shitao@kylinos.cn>
Mon, 7 Apr 2025 08:54:19 +0000 (16:54 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 9 Apr 2025 13:56:19 +0000 (15:56 +0200)
If the difference between capacity_now and full_capacity is
within 0.5%, 100% is arguably a better number to expose than
99% and exposing the latter may confuse the user to think that
there's something wrong with the battery.

Round the capacity percentage to the closest integer value to
avoid the confusion.

Signed-off-by: shitao <shitao@kylinos.cn>
Link: https://patch.msgid.link/20250407085419.494234-1-shitao@kylinos.cn
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/battery.c

index 6760330a8af55d51c82a0447623c2040ffdaab10..6905b56bf3e4580f2fb137e0a1101e13a47591d5 100644 (file)
@@ -279,8 +279,8 @@ static int acpi_battery_get_property(struct power_supply *psy,
                    full_capacity == ACPI_BATTERY_VALUE_UNKNOWN)
                        ret = -ENODEV;
                else
-                       val->intval = battery->capacity_now * 100/
-                                       full_capacity;
+                       val->intval = DIV_ROUND_CLOSEST_ULL(battery->capacity_now * 100ULL,
+                                       full_capacity);
                break;
        case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
                if (battery->state & ACPI_BATTERY_STATE_CRITICAL)