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) {
diff --git a/include/linux/mfd/pm8xxx/pm8921-charger.h b/include/linux/mfd/pm8xxx/pm8921-charger.h
index 8178c50..16d8efb 100644
--- a/include/linux/mfd/pm8xxx/pm8921-charger.h
+++ b/include/linux/mfd/pm8xxx/pm8921-charger.h
@@ -292,6 +292,7 @@
 int pm8921_set_ext_battery_health(int health, int i_limit);
 int pm8921_get_batt_state(void);
 int pm8921_force_start_charging(void);
+int pm8921_get_batt_health(void);
 
 /**
  * pm8921_is_batfet_closed - battery fet status