Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
[firefly-linux-kernel-4.4.55.git] / drivers / power / bq27x00_battery.c
index e0edaf7de54bcb8b8823f899a74b23dccfd038f6..36b34efdafc9fda1d8cc96773031f5b106f005f9 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);
 }