max17042_battery: Do not lose accuracy calculating current_now
authorPhilip Rakity <prakity@marvell.com>
Sat, 13 Aug 2011 04:19:57 +0000 (21:19 -0700)
committerAnton Vorontsov <cbouatmailru@gmail.com>
Fri, 19 Aug 2011 17:03:34 +0000 (21:03 +0400)
PROP_CURRENT_NOW value is first divided then multiplied up
causing a lose of accuracy.  Use the same method as
PROP_CURRENT_AVG to do the calculation.

Signed-off-by: Philip Rakity <prakity@marvell.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
drivers/power/max17042_battery.c

index 4628450..61fb6d7 100644 (file)
@@ -152,8 +152,7 @@ static int max17042_get_property(struct power_supply *psy,
                                val->intval++;
                                val->intval *= -1;
                        }
-                       val->intval >>= 4;
-                       val->intval *= 1000000 * 25 / chip->pdata->r_sns;
+                       val->intval *= 1562500 / chip->pdata->r_sns;
                } else {
                        return -EINVAL;
                }