On 07/18/2016 11:12 AM, H. Nikolaus Schaller wrote: > The bq27000 and bq27010 have a single byte FLAGS register. > Other gauges have 16 bit FLAGS registers. > > For reading the FLAGS register it is sufficient to read the single > register instead of reading RSOC at the next higher address as > well and then ignore the high byte. > > This does not change functionality but optimizes i2c and hdq > traffic. > > Signed-off-by: H. Nikolaus Schaller <[email protected]> > ---
Matches the datasheet, Acked-by: Andrew F. Davis <[email protected]> > drivers/power/bq27xxx_battery.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/power/bq27xxx_battery.c b/drivers/power/bq27xxx_battery.c > index 45f6ebf..56712b2 100644 > --- a/drivers/power/bq27xxx_battery.c > +++ b/drivers/power/bq27xxx_battery.c > @@ -656,8 +656,9 @@ static bool bq27xxx_battery_dead(struct > bq27xxx_device_info *di, u16 flags) > static int bq27xxx_battery_read_health(struct bq27xxx_device_info *di) > { > int flags; > + bool has_singe_flag = di->chip == BQ27000 || di->chip == BQ27010; > > - flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, false); > + flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, has_singe_flag); > if (flags < 0) { > dev_err(di->dev, "error reading flag register:%d\n", flags); > return flags; > @@ -760,7 +761,7 @@ static int bq27xxx_battery_current(struct > bq27xxx_device_info *di, > } > > if (di->chip == BQ27000 || di->chip == BQ27010) { > - flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, false); > + flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, true); > if (flags & BQ27000_FLAG_CHGS) { > dev_dbg(di->dev, "negative current!\n"); > curr = -curr; >

