summaryrefslogtreecommitdiff
path: root/board/galtic/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/galtic/board.c')
-rw-r--r--board/galtic/board.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/board/galtic/board.c b/board/galtic/board.c
index 2c3cb41d17..1adcc7f77c 100644
--- a/board/galtic/board.c
+++ b/board/galtic/board.c
@@ -890,3 +890,33 @@ __override void board_pulse_entering_rw(void)
gpio_set_level(GPIO_EC_ENTERING_RW, 0);
gpio_set_level(GPIO_EC_ENTERING_RW2, 0);
}
+
+enum battery_cell_type battery_cell;
+
+static void get_battery_cell(void)
+{
+ int val;
+
+ if (i2c_read16(I2C_PORT_USB_C0, ISL923X_ADDR_FLAGS,
+ ISL9238_REG_INFO2, &val) == EC_SUCCESS) {
+ /* PROG resistor read out. Number of battery cells [4:0] */
+ val = val & 0x001f;
+ }
+
+ if (val == 0 || val >= 0x18)
+ battery_cell = BATTERY_CELL_TYPE_1S;
+ else if (val >= 0x01 && val <= 0x08)
+ battery_cell = BATTERY_CELL_TYPE_2S;
+ else if (val >= 0x09 && val <= 0x10)
+ battery_cell = BATTERY_CELL_TYPE_3S;
+ else
+ battery_cell = BATTERY_CELL_TYPE_4S;
+
+ CPRINTS("Get battery cells: %d", battery_cell);
+}
+DECLARE_HOOK(HOOK_INIT, get_battery_cell, HOOK_PRIO_INIT_I2C+1);
+
+enum battery_cell_type board_get_battery_cell_type(void)
+{
+ return battery_cell;
+}