diff options
author | Pali Rohár <pali.rohar@gmail.com> | 2013-02-02 11:06:09 +0100 |
---|---|---|
committer | Anton Vorontsov <anton@enomsg.org> | 2013-02-03 04:44:08 +0100 |
commit | 5dc3443eb0d9d3688a6e5a3b4ebb9000d81ff6ba (patch) | |
tree | 44c9c77971b5f1ff7bd29e981ec76193118bfc37 | |
parent | power/reset: Remove newly introduced __dev* annotations (diff) | |
download | linux-5dc3443eb0d9d3688a6e5a3b4ebb9000d81ff6ba.tar.xz linux-5dc3443eb0d9d3688a6e5a3b4ebb9000d81ff6ba.zip |
bq27x00_battery: Fix reporting battery temperature
Reported temperature can be also negative, so cache value in non negative
Kelvin degree.
Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Anton Vorontsov <anton@enomsg.org>
-rw-r--r-- | drivers/power/bq27x00_battery.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c index 7087d0d6a087..8ccf5d7d0add 100644 --- a/drivers/power/bq27x00_battery.c +++ b/drivers/power/bq27x00_battery.c @@ -299,7 +299,7 @@ static int bq27x00_battery_read_energy(struct bq27x00_device_info *di) } /* - * Return the battery temperature in tenths of degree Celsius + * Return the battery temperature in tenths of degree Kelvin * Or < 0 if something fails. */ static int bq27x00_battery_read_temperature(struct bq27x00_device_info *di) @@ -312,10 +312,8 @@ static int bq27x00_battery_read_temperature(struct bq27x00_device_info *di) return temp; } - if (bq27xxx_is_chip_version_higher(di)) - temp -= 2731; - else - temp = ((temp * 5) - 5463) / 2; + if (!bq27xxx_is_chip_version_higher(di)) + temp = 5 * temp / 2; return temp; } @@ -641,6 +639,8 @@ static int bq27x00_battery_get_property(struct power_supply *psy, break; case POWER_SUPPLY_PROP_TEMP: ret = bq27x00_simple_value(di->cache.temperature, val); + if (ret == 0) + val->intval -= 2731; break; case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW: ret = bq27x00_simple_value(di->cache.time_to_empty, val); |