Skip to content

Commit 35092c5

Browse files
jwrdegoedesre
authored andcommitted
power: supply: bq27xxx: Add cache parameter to bq27xxx_battery_current_and_status()
Add a cache parameter to bq27xxx_battery_current_and_status() so that it can optionally use cached flags instead of re-reading them itself. This is a preparation patch for making bq27xxx_battery_update() check the status and have it call power_supply_changed() on status changes. Fixes: 297a533 ("bq27x00: Cache battery registers") Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
1 parent c00bc80 commit 35092c5

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

drivers/power/supply/bq27xxx_battery.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1840,7 +1840,8 @@ static bool bq27xxx_battery_is_full(struct bq27xxx_device_info *di, int flags)
18401840
static int bq27xxx_battery_current_and_status(
18411841
struct bq27xxx_device_info *di,
18421842
union power_supply_propval *val_curr,
1843-
union power_supply_propval *val_status)
1843+
union power_supply_propval *val_status,
1844+
struct bq27xxx_reg_cache *cache)
18441845
{
18451846
bool single_flags = (di->opts & BQ27XXX_O_ZERO);
18461847
int curr;
@@ -1852,10 +1853,14 @@ static int bq27xxx_battery_current_and_status(
18521853
return curr;
18531854
}
18541855

1855-
flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, single_flags);
1856-
if (flags < 0) {
1857-
dev_err(di->dev, "error reading flags\n");
1858-
return flags;
1856+
if (cache) {
1857+
flags = cache->flags;
1858+
} else {
1859+
flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, single_flags);
1860+
if (flags < 0) {
1861+
dev_err(di->dev, "error reading flags\n");
1862+
return flags;
1863+
}
18591864
}
18601865

18611866
if (di->opts & BQ27XXX_O_ZERO) {
@@ -2001,7 +2006,7 @@ static int bq27xxx_battery_get_property(struct power_supply *psy,
20012006

20022007
switch (psp) {
20032008
case POWER_SUPPLY_PROP_STATUS:
2004-
ret = bq27xxx_battery_current_and_status(di, NULL, val);
2009+
ret = bq27xxx_battery_current_and_status(di, NULL, val, NULL);
20052010
break;
20062011
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
20072012
ret = bq27xxx_battery_voltage(di, val);
@@ -2010,7 +2015,7 @@ static int bq27xxx_battery_get_property(struct power_supply *psy,
20102015
val->intval = di->cache.flags < 0 ? 0 : 1;
20112016
break;
20122017
case POWER_SUPPLY_PROP_CURRENT_NOW:
2013-
ret = bq27xxx_battery_current_and_status(di, val, NULL);
2018+
ret = bq27xxx_battery_current_and_status(di, val, NULL, NULL);
20142019
break;
20152020
case POWER_SUPPLY_PROP_CAPACITY:
20162021
ret = bq27xxx_simple_value(di->cache.capacity, val);

0 commit comments

Comments
 (0)