diff options
Diffstat (limited to 'board/poppy/board.c')
-rw-r--r-- | board/poppy/board.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/board/poppy/board.c b/board/poppy/board.c index 0303da3fba..9add68bfa9 100644 --- a/board/poppy/board.c +++ b/board/poppy/board.c @@ -634,6 +634,7 @@ DECLARE_HOOK(HOOK_AC_CHANGE, board_extpower, HOOK_PRIO_DEFAULT); */ int board_set_active_charge_port(int charge_port) { + static uint8_t initialized; /* charge port is a physical port */ int is_real_port = (charge_port >= 0 && charge_port < CONFIG_USB_PD_PORT_COUNT); @@ -646,6 +647,13 @@ int board_set_active_charge_port(int charge_port) return EC_ERROR_INVAL; } + if (!initialized && + charge_port == CHARGE_PORT_NONE && + charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) { + CPRINTS("Bat critical, don't stop charging"); + return -1; + } + CPRINTF("New chg p%d", charge_port); if (charge_port == CHARGE_PORT_NONE) { @@ -661,6 +669,7 @@ int board_set_active_charge_port(int charge_port) GPIO_USB_C0_CHARGE_L, 0); } + initialized = 1; return EC_SUCCESS; } |