diff options
Diffstat (limited to 'board/galtic/board.c')
-rw-r--r-- | board/galtic/board.c | 30 |
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; +} |