power: pm8921-charger: prevent recharging when batt is overheat
When battery is forced to stop charging by overheat, re-charging
should not be initiated even if re-charging condition is satisfied.
Change-Id: I0070039a186ccf3f12c0e79a8696a7aa3c61e538
diff --git a/drivers/power/pm8921-bms.c b/drivers/power/pm8921-bms.c
index cb569b4..629da57 100644
--- a/drivers/power/pm8921-bms.c
+++ b/drivers/power/pm8921-bms.c
@@ -1962,8 +1962,10 @@
{
if (soc == -EINVAL)
return 0;
- if (pm8921_get_batt_state() == POWER_SUPPLY_STATUS_FULL
- && soc < 100)
+ if ((pm8921_get_batt_state() == POWER_SUPPLY_STATUS_FULL)
+ && (soc < 100)
+ && (pm8921_get_batt_health()
+ != POWER_SUPPLY_HEALTH_OVERHEAT))
return 1;
return 0;
}
diff --git a/drivers/power/pm8921-charger.c b/drivers/power/pm8921-charger.c
index 4acee97..3f31f82 100644
--- a/drivers/power/pm8921-charger.c
+++ b/drivers/power/pm8921-charger.c
@@ -2098,6 +2098,22 @@
}
EXPORT_SYMBOL(pm8921_get_batt_state);
+int pm8921_get_batt_health(void)
+{
+ int batt_health;
+
+ if (!the_chip) {
+ pr_err("called before init\n");
+ return -EINVAL;
+ }
+
+ batt_health = get_prop_batt_health(the_chip);
+
+ pr_debug("batt health = %d\n", batt_health);
+ return batt_health;
+}
+EXPORT_SYMBOL(pm8921_get_batt_health);
+
int pm8921_batt_temperature(void)
{
if (!the_chip) {