ab8500_btemp: Allign battery temperature resolution with the framework
authorLee Jones <lee.jones@linaro.org>
Fri, 11 Jan 2013 13:12:56 +0000 (13:12 +0000)
committerAnton Vorontsov <anton@enomsg.org>
Wed, 16 Jan 2013 01:44:28 +0000 (17:44 -0800)
The Linux Power Supply framework expects battery temperatures to have
a resolution of 0.1 degree Celsius; however, the AB8500 btemp driver
supplies a battery temperature resolution of 1 degree Celsius. We
therefore have to use a factor 10 on the measured values.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Anton Vorontsov <anton@enomsg.org>
drivers/power/ab8500_btemp.c

index 4a570b6c9e47cb542260e4203258f93567641e7e..adebf6c6d1466a8a95b1c5824d89ad232e4453aa 100644 (file)
@@ -746,22 +746,22 @@ static int ab8500_btemp_get_temp(struct ab8500_btemp *di)
        } else {
                if (di->events.btemp_low) {
                        if (temp > di->btemp_ranges.btemp_low_limit)
-                               temp = di->btemp_ranges.btemp_low_limit;
+                               temp = di->btemp_ranges.btemp_low_limit * 10;
                        else
                                temp = di->bat_temp * 10;
                } else if (di->events.btemp_high) {
                        if (temp < di->btemp_ranges.btemp_high_limit)
-                               temp = di->btemp_ranges.btemp_high_limit;
+                               temp = di->btemp_ranges.btemp_high_limit * 10;
                        else
                                temp = di->bat_temp * 10;
                } else if (di->events.btemp_lowmed) {
                        if (temp > di->btemp_ranges.btemp_med_limit)
-                               temp = di->btemp_ranges.btemp_med_limit;
+                               temp = di->btemp_ranges.btemp_med_limit * 10;
                        else
                                temp = di->bat_temp * 10;
                } else if (di->events.btemp_medhigh) {
                        if (temp < di->btemp_ranges.btemp_med_limit)
-                               temp = di->btemp_ranges.btemp_med_limit;
+                               temp = di->btemp_ranges.btemp_med_limit * 10;
                        else
                                temp = di->bat_temp * 10;
                } else
@@ -1030,8 +1030,8 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
                ab8500_btemp_periodic_work);
 
        /* Set BTEMP thermal limits. Low and Med are fixed */
-       di->btemp_ranges.btemp_low_limit = BTEMP_THERMAL_LOW_LIMIT;
-       di->btemp_ranges.btemp_med_limit = BTEMP_THERMAL_MED_LIMIT;
+       di->btemp_ranges.btemp_low_limit = BTEMP_THERMAL_LOW_LIMIT * 10;
+       di->btemp_ranges.btemp_med_limit = BTEMP_THERMAL_MED_LIMIT * 10;
 
        ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER,
                AB8500_BTEMP_HIGH_TH, &val);