Commit 5dc3443e authored by Pali Rohár's avatar Pali Rohár Committed by Anton Vorontsov
Browse files

bq27x00_battery: Fix reporting battery temperature



Reported temperature can be also negative, so cache value in non negative
Kelvin degree.

Signed-off-by: default avatarPali Rohár <pali.rohar@gmail.com>
Signed-off-by: default avatarAnton Vorontsov <anton@enomsg.org>
parent 60a1c4d4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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);