From f43a4faa0e2a37748a395d395c844be734f56093 Mon Sep 17 00:00:00 2001 From: HongMin Son Date: Thu, 11 Oct 2012 19:42:54 +0900 Subject: [PATCH] power: android-battery: Battery health check only when connected to charger Only check battery health when connected to a charger. Change-Id: I43e3f73ac1e5862f8e6dbaa19daa6d322f3bba20 Signed-off-by: HongMin Son --- drivers/power/android_battery.c | 47 ++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/drivers/power/android_battery.c b/drivers/power/android_battery.c index 7befc14e3aa3..a5b5f65e019c 100644 --- a/drivers/power/android_battery.c +++ b/drivers/power/android_battery.c @@ -201,28 +201,39 @@ static void android_bat_get_temp(struct android_bat_data *battery) if (battery->pdata->get_temperature) battery->pdata->get_temperature(&batt_temp); - if (batt_temp >= battery->pdata->temp_high_threshold) { - if (health != POWER_SUPPLY_HEALTH_OVERHEAT && + if (battery->charge_source != CHARGE_SOURCE_NONE) { + if (batt_temp >= battery->pdata->temp_high_threshold) { + if (health != POWER_SUPPLY_HEALTH_OVERHEAT && health != POWER_SUPPLY_HEALTH_UNSPEC_FAILURE) { - pr_info("battery overheat (%d>=%d), charging unavailable\n", - batt_temp, battery->pdata->temp_high_threshold); - battery->batt_health = POWER_SUPPLY_HEALTH_OVERHEAT; - } - } else if (batt_temp <= battery->pdata->temp_high_recovery && + pr_info("battery overheat (%d>=%d), " \ + "charging unavailable\n", + batt_temp, + battery->pdata->temp_high_threshold); + battery->batt_health = + POWER_SUPPLY_HEALTH_OVERHEAT; + } + } else if (batt_temp <= battery->pdata->temp_high_recovery && batt_temp >= battery->pdata->temp_low_recovery) { - if (health == POWER_SUPPLY_HEALTH_OVERHEAT || + if (health == POWER_SUPPLY_HEALTH_OVERHEAT || health == POWER_SUPPLY_HEALTH_COLD) { - pr_info("battery recovery (%d,%d~%d), charging available\n", - batt_temp, battery->pdata->temp_low_recovery, - battery->pdata->temp_high_recovery); - battery->batt_health = POWER_SUPPLY_HEALTH_GOOD; - } - } else if (batt_temp <= battery->pdata->temp_low_threshold) { - if (health != POWER_SUPPLY_HEALTH_COLD && + pr_info("battery recovery (%d,%d~%d)," \ + "charging available\n", + batt_temp, + battery->pdata->temp_low_recovery, + battery->pdata->temp_high_recovery); + battery->batt_health = + POWER_SUPPLY_HEALTH_GOOD; + } + } else if (batt_temp <= battery->pdata->temp_low_threshold) { + if (health != POWER_SUPPLY_HEALTH_COLD && health != POWER_SUPPLY_HEALTH_UNSPEC_FAILURE) { - pr_info("battery cold (%d <= %d), charging unavailable\n", - batt_temp, battery->pdata->temp_low_threshold); - battery->batt_health = POWER_SUPPLY_HEALTH_COLD; + pr_info("battery cold (%d <= %d)," \ + "charging unavailable\n", + batt_temp, + battery->pdata->temp_low_threshold); + battery->batt_health = + POWER_SUPPLY_HEALTH_COLD; + } } } -- 2.34.1