]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
bq27x00: Fix CURRENT_NOW property
authorPali Rohár <pali.rohar@gmail.com>
Mon, 24 May 2010 18:52:13 +0000 (20:52 +0200)
committerLars-Peter Clausen <lars@metafoo.de>
Tue, 22 Feb 2011 10:02:39 +0000 (11:02 +0100)
According to the bq27000 datasheet the current should be calculated by
the following formula:
    current = AI * 3570 / 20

This patch adjust the drivers code accordingly.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Rodolfo Giometti <giometti@linux.it>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
drivers/power/bq27x00_battery.c

index 4f7465999c865823ec1daa694fc54733dccede56..1b06134e0ae883b88852af2719da59996024e39b 100644 (file)
@@ -44,6 +44,8 @@
 #define BQ27500_FLAG_DSC               BIT(0)
 #define BQ27500_FLAG_FC                        BIT(9)
 
+#define BQ27000_RS                     20 /* Resistor sense */
+
 /* If the system has several batteries we need a different name for each
  * of them...
  */
@@ -149,7 +151,7 @@ static int bq27x00_battery_current(struct bq27x00_device_info *di)
 
        if (di->chip == BQ27500) {
                /* bq27500 returns signed value */
-               curr = (int)(s16)curr;
+               curr = (int)((s16)curr) * 1000;
        } else {
                ret = bq27x00_read(BQ27x00_REG_FLAGS, &flags, 0, di);
                if (ret < 0) {
@@ -160,9 +162,10 @@ static int bq27x00_battery_current(struct bq27x00_device_info *di)
                        dev_dbg(di->dev, "negative current!\n");
                        curr = -curr;
                }
+               curr = curr * 3570 / BQ27000_RS;
        }
 
-       return curr * 1000;
+       return curr;
 }
 
 /*