bq27x00_battery: Fixup nominal available capacity reporting
authorPali Rohár <pali.rohar@gmail.com>
Sat, 10 Nov 2012 14:42:48 +0000 (15:42 +0100)
committerAnton Vorontsov <anton.vorontsov@linaro.org>
Mon, 19 Nov 2012 00:02:41 +0000 (16:02 -0800)
We should not not report nominal available capacity if battery is not
calibrated, as we don't want to represent bogus values in the sysfs and
confuse userland.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
drivers/power/bq27x00_battery.c

index 5860d4dfbe9cdaf3fbeed4870429c5e918166c3c..41b3328ecfc550e21854f4034c807e350178efd4 100644 (file)
@@ -230,6 +230,14 @@ static int bq27x00_battery_read_charge(struct bq27x00_device_info *di, u8 reg)
  */
 static inline int bq27x00_battery_read_nac(struct bq27x00_device_info *di)
 {
+       int flags;
+       bool is_bq27500 = di->chip == BQ27500;
+       bool is_higher = bq27xxx_is_chip_version_higher(di);
+
+       flags = bq27x00_read(di, BQ27x00_REG_FLAGS, !is_bq27500);
+       if (flags >= 0 && !is_higher && (flags & BQ27000_FLAG_CI))
+               return -ENODATA;
+
        return bq27x00_battery_read_charge(di, BQ27x00_REG_NAC);
 }