aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTodd Poynor <toddpoynor@google.com>2014-09-23 18:35:25 -0700
committerMoyster <oysterized@gmail.com>2017-12-13 21:48:41 +0100
commite286a8c13178f9420888869c3c2ef11c40ba6fca (patch)
treef6704c87b40433e2b235c18d4fb3dcd725204b1f /drivers
parent8a9f5ad001ed36fc7d6a70d25cffb6f06116ec09 (diff)
power: mediatek: send battery cold/overheat health status to userspace
Change-Id: I4daba069df9fe64f44f4ef064478e7b3a37f9f13 Signed-off-by: Todd Poynor <toddpoynor@google.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/mediatek/battery_common.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/power/mediatek/battery_common.c b/drivers/power/mediatek/battery_common.c
index e5a672ac4..2aa5a14f4 100644
--- a/drivers/power/mediatek/battery_common.c
+++ b/drivers/power/mediatek/battery_common.c
@@ -1870,7 +1870,17 @@ static void battery_update(struct battery_data *bat_data)
kal_bool resetBatteryMeter = KAL_FALSE;
bat_data->BAT_TECHNOLOGY = POWER_SUPPLY_TECHNOLOGY_LION;
- bat_data->BAT_HEALTH = POWER_SUPPLY_HEALTH_GOOD;
+
+ if (BMT_status.temperature == ERR_CHARGE_TEMPERATURE) {
+ bat_data->BAT_HEALTH = POWER_SUPPLY_HEALTH_UNSPEC_FAILURE;
+ } else if (BMT_status.temperature < MIN_CHARGE_TEMPERATURE) {
+ bat_data->BAT_HEALTH = POWER_SUPPLY_HEALTH_COLD;
+ } else if (BMT_status.temperature >= MAX_CHARGE_TEMPERATURE) {
+ bat_data->BAT_HEALTH = POWER_SUPPLY_HEALTH_OVERHEAT;
+ } else {
+ bat_data->BAT_HEALTH = POWER_SUPPLY_HEALTH_GOOD;
+ }
+
bat_data->BAT_batt_vol = BMT_status.bat_vol * 1000;
bat_data->BAT_batt_temp = BMT_status.temperature * 10;
bat_data->BAT_PRESENT = BMT_status.bat_exist;