bq27x00_battery: Do not report nominal available capaciy if battery is not calibrated
authorPali Rohár <pali.rohar@gmail.com>
Sat, 10 Nov 2012 14:26:30 +0000 (15:26 +0100)
committerPali Rohár <pali.rohar@gmail.com>
Sat, 10 Nov 2012 14:26:30 +0000 (15:26 +0100)
kernel-power-2.6.28/debian/patches/bq27x00-fix-nac.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/series

diff --git a/kernel-power-2.6.28/debian/patches/bq27x00-fix-nac.diff b/kernel-power-2.6.28/debian/patches/bq27x00-fix-nac.diff
new file mode 100644 (file)
index 0000000..8a6eb9f
--- /dev/null
@@ -0,0 +1,21 @@
+diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
+index 5860d4d..41b3328 100644
+--- a/drivers/power/bq27x00_battery.c
++++ b/drivers/power/bq27x00_battery.c
+@@ -230,6 +230,13 @@ 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;
++
++      flags = bq27x00_read(di, BQ27x00_REG_FLAGS, !is_bq27500);
++      if (flags >= 0 && !is_bq27500 && (flags & BQ27000_FLAG_CI))
++              return -ENODATA;
++
+       return bq27x00_battery_read_charge(di, BQ27x00_REG_NAC);
+ }
+-- 
+1.7.10.4
+
index 5aed59d..8fffb38 100644 (file)
@@ -44,6 +44,7 @@ power-supply-ignore-enodata.diff
 power-supply-no-verbose.diff
 bq27x00-rx51-board.diff
 bq27x00-upstream.diff
+bq27x00-fix-nac.diff
 bq27x00-maemo.diff
 bq27x00-sysfs-registers.diff
 l2cap_parent.diff