Message ID | 20230613213150.908462-1-linus.walleij@linaro.org |
---|---|
State | Accepted |
Commit | dc77721ea4aa1e8937e2436f230b5a69065cc508 |
Headers | show |
Series | power: supply: ab8500: Set typing and props | expand |
Hi Sebastian, could you apply this patch please? It's a regression. Yours, Linus Walleij On Tue, Jun 13, 2023 at 11:31 PM Linus Walleij <linus.walleij@linaro.org> wrote: > I had the following weird phenomena on a mobile phone: while > the capacity in /sys/class/power_supply/ab8500_fg/capacity > would reflect the actual charge and capacity of the battery, > only 1/3 of the value was shown on the battery status > indicator and warnings for low battery appeared. > > It turns out that utemp, the Freedesktop temperature daemon, > will average all the power supplies of type "battery" in > /sys/class/power_supply/* if there is more than one battery. > > For the AB8500, there was "battery" ab8500_fg, ab8500_btemp > and ab8500_chargalg. The latter two don't know anything > about the battery, and should not be considered. They were > however averaged and with the capacity of 0. > > Flag ab8500_btemp and ab8500_chargalg with type "unknown" > so they are not averaged as batteries. > > Remove the technology prop from ab8500_btemp as well, all > it does is snoop in on knowledge from another supply. > > After this the battery indicator shows the right value. > > Cc: Stefan Hansson <newbyte@disroot.org> > Cc: stable@vger.kernel.org > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Hi Linus, On Sun, Jul 16, 2023 at 10:59:42PM +0200, Linus Walleij wrote: > could you apply this patch please? > > It's a regression. Sorry for the delay; it's merged to my fixes branch now. Greetings, -- Sebastian
diff --git a/drivers/power/supply/ab8500_btemp.c b/drivers/power/supply/ab8500_btemp.c index 307ee6f71042..3662ca53941e 100644 --- a/drivers/power/supply/ab8500_btemp.c +++ b/drivers/power/supply/ab8500_btemp.c @@ -115,7 +115,6 @@ struct ab8500_btemp { static enum power_supply_property ab8500_btemp_props[] = { POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_ONLINE, - POWER_SUPPLY_PROP_TECHNOLOGY, POWER_SUPPLY_PROP_TEMP, }; @@ -532,12 +531,6 @@ static int ab8500_btemp_get_property(struct power_supply *psy, else val->intval = 1; break; - case POWER_SUPPLY_PROP_TECHNOLOGY: - if (di->bm->bi) - val->intval = di->bm->bi->technology; - else - val->intval = POWER_SUPPLY_TECHNOLOGY_UNKNOWN; - break; case POWER_SUPPLY_PROP_TEMP: val->intval = ab8500_btemp_get_temp(di); break; @@ -664,7 +657,7 @@ static char *supply_interface[] = { static const struct power_supply_desc ab8500_btemp_desc = { .name = "ab8500_btemp", - .type = POWER_SUPPLY_TYPE_BATTERY, + .type = POWER_SUPPLY_TYPE_UNKNOWN, .properties = ab8500_btemp_props, .num_properties = ARRAY_SIZE(ab8500_btemp_props), .get_property = ab8500_btemp_get_property, diff --git a/drivers/power/supply/ab8500_chargalg.c b/drivers/power/supply/ab8500_chargalg.c index ea4ad61d4c7e..2205ea0834a6 100644 --- a/drivers/power/supply/ab8500_chargalg.c +++ b/drivers/power/supply/ab8500_chargalg.c @@ -1720,7 +1720,7 @@ static char *supply_interface[] = { static const struct power_supply_desc ab8500_chargalg_desc = { .name = "ab8500_chargalg", - .type = POWER_SUPPLY_TYPE_BATTERY, + .type = POWER_SUPPLY_TYPE_UNKNOWN, .properties = ab8500_chargalg_props, .num_properties = ARRAY_SIZE(ab8500_chargalg_props), .get_property = ab8500_chargalg_get_property,
I had the following weird phenomena on a mobile phone: while the capacity in /sys/class/power_supply/ab8500_fg/capacity would reflect the actual charge and capacity of the battery, only 1/3 of the value was shown on the battery status indicator and warnings for low battery appeared. It turns out that utemp, the Freedesktop temperature daemon, will average all the power supplies of type "battery" in /sys/class/power_supply/* if there is more than one battery. For the AB8500, there was "battery" ab8500_fg, ab8500_btemp and ab8500_chargalg. The latter two don't know anything about the battery, and should not be considered. They were however averaged and with the capacity of 0. Flag ab8500_btemp and ab8500_chargalg with type "unknown" so they are not averaged as batteries. Remove the technology prop from ab8500_btemp as well, all it does is snoop in on knowledge from another supply. After this the battery indicator shows the right value. Cc: Stefan Hansson <newbyte@disroot.org> Cc: stable@vger.kernel.org Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- drivers/power/supply/ab8500_btemp.c | 9 +-------- drivers/power/supply/ab8500_chargalg.c | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-)