summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2017-01-25 10:39:09 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-01-25 22:12:30 -0800
commit7a4eac1bed523e0f37597efcf1b887d996a037f0 (patch)
tree4ec10d33497182116aa9f60fdccab559591451e5 /driver
parent325c93fa94dc8ffbd15386d66c45dc0aaca262bb (diff)
downloadchrome-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.c11
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;