diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2017-01-25 10:39:09 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-01-25 22:12:30 -0800 |
commit | 7a4eac1bed523e0f37597efcf1b887d996a037f0 (patch) | |
tree | 4ec10d33497182116aa9f60fdccab559591451e5 /driver | |
parent | 325c93fa94dc8ffbd15386d66c45dc0aaca262bb (diff) | |
download | chrome-ec-7a4eac1bed523e0f37597efcf1b887d996a037f0.tar.gz |
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 <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/432857
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/charger/bd9995x.c | 11 |
1 files changed, 7 insertions, 4 deletions
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; |