summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorganX Binet <morganx.binet@intel.com>2016-11-10 15:33:34 +0100
committerjenkins_ndg <jenkins_ndg@intel.com>2016-11-16 09:59:06 +0000
commit1fa7b5d3709fcfd84d28f68ebe9af0524296618a (patch)
treecb8d159bd615883595dcd536fbabbf81cefd67c2
parent0945c2d1b7df230d68817262ec79982013b59e46 (diff)
downloadx86-1fa7b5d3709fcfd84d28f68ebe9af0524296618a.tar.gz
em: fix charger health property
add GOOD health status removed by a previous patch add COLD & OVERHEAT health status for NTC fault Change-Id: I796063b90aef03887be59ae4448a5671749425eb Tracked-On: https://jira01.devtools.intel.com/browse/AW-2778 Signed-off-by: MorganX Binet <morganx.binet@intel.com> Reviewed-on: https://android.intel.com/551445 Reviewed-by: Chaumette, HubertX <hubertx.chaumette@intel.com> Reviewed-by: jenkins_ndg <jenkins_ndg@intel.com> Reviewed-by: Ghaddab, RiadhX <riadhx.ghaddab@intel.com> Reviewed-by: Tasayco Loarte, VictorX <victorx.tasayco.loarte@intel.com> Reviewed-by: Jarzmik, Robert <robert.jarzmik@intel.com>
-rw-r--r--drivers/external_drivers/drivers/power/bq25898_charger.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/drivers/external_drivers/drivers/power/bq25898_charger.c b/drivers/external_drivers/drivers/power/bq25898_charger.c
index f4b1fe05877f..78c60378ebf7 100644
--- a/drivers/external_drivers/drivers/power/bq25898_charger.c
+++ b/drivers/external_drivers/drivers/power/bq25898_charger.c
@@ -313,6 +313,11 @@
#define BOOST_FAULT_MASK (0x40)
#define WATCHDOG_FAULT_MASK (0x80)
+#define CHARGER_FAULT_OVERHEAT 0x01
+#define CHARGER_FAULT_SAFETY_TIMER_EXPIRE 0x03
+#define NTC_FAULT_COLD 0x05
+#define NTC_FAULT_OVERHEAT 0x06
+
const char * const NTC_fault_to_human[] = {
[0x0] = "Normal\n",
[0x2] = "TS Warm (Buck mode)\n",
@@ -328,7 +333,7 @@ const char * const CHARGER_fault_to_human[] = {
[0x3] = "Charge safety timer expired\n"
};
-enum {
+enum {
BAT_FAULT_OFF = 0,
BOOST_FAULT_OFF,
WATCHDOG_FAULT_OFF,
@@ -2499,19 +2504,33 @@ static int bq25898_get_prop_health(struct bq25898_charger *chip)
if (val < 0)
return val;
+ /*No fault*/
+ if (!val)
+ return POWER_SUPPLY_HEALTH_GOOD;
+
+ /*Watchdog fault*/
if (val & WATCHDOG_FAULT_MASK)
return POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE;
+ /*Charger fault*/
if (val & CHARGER_FAULT_MASK) {
- if (((val & CHARGER_FAULT_MASK) >> 4) == 0x01)
+ if (((val & CHARGER_FAULT_MASK) >> 4) == CHARGER_FAULT_OVERHEAT)
return POWER_SUPPLY_HEALTH_OVERHEAT;
- if (((val & CHARGER_FAULT_MASK) >> 4) == 0x03)
+ if (((val & CHARGER_FAULT_MASK) >> 4) == CHARGER_FAULT_SAFETY_TIMER_EXPIRE)
return POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE;
}
+ /*Battery fault*/
if (val & BAT_FAULT_MASK)
return POWER_SUPPLY_HEALTH_OVERVOLTAGE;
+ /*Thermal fault*/
+ if (val & NTC_FAULT_MASK) {
+ if ((val & NTC_FAULT_MASK) == NTC_FAULT_COLD)
+ return POWER_SUPPLY_HEALTH_COLD;
+ if ((val & NTC_FAULT_MASK) == NTC_FAULT_OVERHEAT)
+ return POWER_SUPPLY_HEALTH_OVERHEAT;
+ }
return POWER_SUPPLY_HEALTH_UNKNOWN;
}