Hi, On 9/29/21 8:14 PM, Henrik Grimler wrote: > On Galaxy S3 (i9300/i9305), which has the max17047 fuel gauge and no > current sense resistor (rsns), the RepSOC register does not provide an > accurate state of charge value. The reported value is wrong, and does > not change over time. VFSOC however, which uses the voltage fuel gauge > to determine the state of charge, always shows an accurate value. > > For devices without current sense, VFSOC is already used for the > soc-alert (0x0003 is written to MiscCFG register), so with this change > the source of the alert and the PROP_CAPACITY value match. > > Fixes: 359ab9f5b154 ("power_supply: Add MAX17042 Fuel Gauge Driver") > Cc: <stable@xxxxxxxxxxxxxxx> > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxx> > Suggested-by: Wolfgang Wiedmeyer <wolfgit@xxxxxxxxxxxx> > Signed-off-by: Henrik Grimler <henrik@xxxxxxxxxx> > --- > Changes in v2: > Re-write commit message to highlight that VFSOC is already used for > alert, after Krzysztof's comments Thanks, both patches looks good to me: Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> for the series. Regards, Hans > --- > drivers/power/supply/max17042_battery.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c > index 8dffae76b6a3..5809ba997093 100644 > --- a/drivers/power/supply/max17042_battery.c > +++ b/drivers/power/supply/max17042_battery.c > @@ -313,7 +313,10 @@ static int max17042_get_property(struct power_supply *psy, > val->intval = data * 625 / 8; > break; > case POWER_SUPPLY_PROP_CAPACITY: > - ret = regmap_read(map, MAX17042_RepSOC, &data); > + if (chip->pdata->enable_current_sense) > + ret = regmap_read(map, MAX17042_RepSOC, &data); > + else > + ret = regmap_read(map, MAX17042_VFSOC, &data); > if (ret < 0) > return ret; > > > base-commit: 5816b3e6577eaa676ceb00a848f0fd65fe2adc29 >