summaryrefslogtreecommitdiff
path: root/common/battery_fuel_gauge.c
diff options
context:
space:
mode:
authorJonathan Brandmeyer <jbrandmeyer@chromium.org>2018-08-03 13:24:06 -0600
committerchrome-bot <chrome-bot@chromium.org>2018-08-08 04:29:20 -0700
commitb80693e94e6e9aa0a382c39c20efba6f2c7403a9 (patch)
treeb44a8b48858906c6f8a3875b6a69d7c2b6908ddc /common/battery_fuel_gauge.c
parent5d2cdcab232748095d1efeb4e5c0fc23b13adb67 (diff)
downloadchrome-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.c19
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 */