diff options
author | MorganX Binet <morganx.binet@intel.com> | 2016-11-10 15:33:34 +0100 |
---|---|---|
committer | jenkins_ndg <jenkins_ndg@intel.com> | 2016-11-16 09:59:06 +0000 |
commit | 1fa7b5d3709fcfd84d28f68ebe9af0524296618a (patch) | |
tree | cb8d159bd615883595dcd536fbabbf81cefd67c2 | |
parent | 0945c2d1b7df230d68817262ec79982013b59e46 (diff) | |
download | x86-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.c | 25 |
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; } |