From 5f870ddebb8c909d68278b66dac1b9143d6ef50a Mon Sep 17 00:00:00 2001 From: Rob Barnes Date: Thu, 3 Feb 2022 13:10:53 -0700 Subject: nipperkin: Override current limit when no battery When there is no battery or battery is malfunctioning, override charger current limit to be 6A to prevent brownouts during boot. BUG=b:202754460 BRANCH=guybrush TEST=100+ cycles on R7 with 16GB 25% brownout with 65W charger without override. 15% brownout with 87W charger without override. 3% brownout with 65W charger with override. 0% brownout with 87W charger with override. Change-Id: Ib8f1610415e6b185e694e07e048d15c4b6e8ffa5 Signed-off-by: Rob Barnes Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3436689 Reviewed-by: Zick Wei Reviewed-by: Diana Z --- board/nipperkin/board.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'board/nipperkin') diff --git a/board/nipperkin/board.c b/board/nipperkin/board.c index d8a22aabb2..81a19f2f58 100644 --- a/board/nipperkin/board.c +++ b/board/nipperkin/board.c @@ -7,8 +7,10 @@ #include "adc.h" #include "base_fw_config.h" +#include "battery.h" #include "board_fw_config.h" #include "button.h" +#include "charger.h" #include "chipset.h" #include "common.h" #include "cros_board_info.h" @@ -484,3 +486,20 @@ static void hdmi_hpd_interrupt(enum gpio_signal signal) /* Debounce for 2 msec */ hook_call_deferred(&hdmi_hpd_handler_data, (2 * MSEC)); } + +void board_set_current_limit(void) +{ + const int no_battery_current_limit_override_ma = 6000; + /* + * When there is no battery, override charger current limit to + * prevent brownout during boot. + */ + if (battery_is_present() == BP_NO) { + ccprints("No Battery Found - Override Current Limit to %dmA", + no_battery_current_limit_override_ma); + charger_set_input_current_limit( + CHARGER_SOLO, no_battery_current_limit_override_ma); + } +} +DECLARE_HOOK(HOOK_BATTERY_SOC_CHANGE, board_set_current_limit, + HOOK_PRIO_INIT_EXTPOWER); -- cgit v1.2.1