diff options
author | Jonathan Brandmeyer <jbrandmeyer@chromium.org> | 2018-08-03 13:24:06 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-08-08 04:29:20 -0700 |
commit | b80693e94e6e9aa0a382c39c20efba6f2c7403a9 (patch) | |
tree | b44a8b48858906c6f8a3875b6a69d7c2b6908ddc /common/battery_fuel_gauge.c | |
parent | 5d2cdcab232748095d1efeb4e5c0fc23b13adb67 (diff) | |
download | chrome-ec-b80693e94e6e9aa0a382c39c20efba6f2c7403a9.tar.gz |
battery: Optionally prevent boot at low SOC with cell imbalance.
Measure the cell imbalance with method dispatch to a per-battery
method, such that families with a plurality of configurable batteries
can support them all. By default, cell imbalance is taken to be 'zero'
in case we don't support that battery's management IC. Provide a driver
for reading cell voltages for the TI BQ4050 family. This IC is quite
popular, but by no means universal.
BUG=b:111214767
BRANCH=none
TEST=Boot on Careena with a custom debug print statement, showing that
we can measure the typical battery voltages during and after the boot at
the battery status polling interval.
Change-Id: I235389b252ac9c373aa9706dbd1066f7c0bbce71
Signed-off-by: Jonathan Brandmeyer <jbrandmeyer@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1162663
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'common/battery_fuel_gauge.c')
-rw-r--r-- | common/battery_fuel_gauge.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/common/battery_fuel_gauge.c b/common/battery_fuel_gauge.c index 204b562401..476ca52570 100644 --- a/common/battery_fuel_gauge.c +++ b/common/battery_fuel_gauge.c @@ -162,3 +162,22 @@ enum battery_disconnect_state battery_get_disconnect_state(void) return BATTERY_NOT_DISCONNECTED; } + +#ifdef CONFIG_BATTERY_MEASURE_IMBALANCE +int battery_imbalance_mv(void) +{ + int type = get_battery_type(); + + /* + * If battery type is unknown, we cannot safely access non-standard + * registers. + */ + return (type == BATTERY_TYPE_COUNT) ? 0 : + board_battery_info[type].fuel_gauge.imbalance_mv(); +} + +int battery_default_imbalance_mv(void) +{ + return 0; +} +#endif /* CONFIG_BATTERY_MEASURE_IMBALANCE */ |