From 7a4eac1bed523e0f37597efcf1b887d996a037f0 Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Wed, 25 Jan 2017 10:39:09 -0800 Subject: Reef: Reduce max battery charge voltage for 0.5% margin (From CL 431233) Limit battery charge voltage to prevent battery over-charge, due to regulation inaccuracy. Since RO FW may charge > 8656 mV, ensure the battery is not full before charging. BUG=chrome-os-partner:61906 BRANCH=none TEST=Manual on Electro, sysjump with battery @ 99%, verify battery discharges, then re-charges to 100%, before discharging once again. Change-Id: I28212c83057a442fd75e39f8ad51927a7a1f2817 Signed-off-by: Daisuke Nojiri Reviewed-on: https://chromium-review.googlesource.com/432857 Reviewed-by: Aaron Durbin --- driver/charger/bd9995x.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'driver') diff --git a/driver/charger/bd9995x.c b/driver/charger/bd9995x.c index 607d0b81f6..c668aa5260 100644 --- a/driver/charger/bd9995x.c +++ b/driver/charger/bd9995x.c @@ -607,6 +607,7 @@ int charger_get_voltage(int *voltage) int charger_set_voltage(int voltage) { + const int battery_voltage_max = battery_get_info()->voltage_max; int rv; int reg; @@ -620,14 +621,16 @@ int charger_set_voltage(int voltage) return rv; if (voltage == 0 || - reg & BD9995X_CMD_CHGOP_SET2_BATT_LEARN || - battery_is_present() != BP_YES || - battery_is_cut_off()) - voltage = battery_get_info()->voltage_max; + reg & BD9995X_CMD_CHGOP_SET2_BATT_LEARN || + battery_is_present() != BP_YES || + battery_is_cut_off() || + voltage > battery_voltage_max) + voltage = battery_voltage_max; /* Charge voltage step 16 mV */ voltage &= ~0x0F; + /* Assumes charger's voltage_min < battery's voltagte_max */ if (voltage < bd9995x_charger_info.voltage_min) voltage = bd9995x_charger_info.voltage_min; -- cgit v1.2.1