diff options
-rw-r--r-- | board/kevin/board.c | 6 | ||||
-rw-r--r-- | board/kevin/board.h | 4 | ||||
-rw-r--r-- | common/charge_manager.c | 3 | ||||
-rw-r--r-- | common/charge_state_v2.c | 21 | ||||
-rw-r--r-- | include/charge_manager.h | 2 |
5 files changed, 21 insertions, 15 deletions
diff --git a/board/kevin/board.c b/board/kevin/board.c index fb134c31e4..ff070f1167 100644 --- a/board/kevin/board.c +++ b/board/kevin/board.c @@ -208,8 +208,8 @@ int board_set_active_charge_port(int charge_port) */ if (!initialized && charge_port == CHARGE_PORT_NONE && - charge_get_percent() < 2) { - CPRINTS("Battery critical, don't disable charging"); + charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) { + CPRINTS("Bat critical, don't stop charging"); return -1; } @@ -244,7 +244,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma) */ if (supplier == CHARGE_SUPPLIER_PD && charge_ma < 1500 && - charge_get_percent() < 2) { + charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) { CPRINTS("Using max ilim %d", max_ma); charge_ma = max_ma; } diff --git a/board/kevin/board.h b/board/kevin/board.h index 1b190e0a07..85b2cfeda3 100644 --- a/board/kevin/board.h +++ b/board/kevin/board.h @@ -63,8 +63,8 @@ #define CONFIG_CHARGER_INPUT_CURRENT 512 #define CONFIG_CHARGER_NARROW_VDC #define CONFIG_CHARGER_V2 -#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1 -#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 1 +#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 2 +#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 2 #define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 15000 #define CONFIG_USB_CHARGER #define CONFIG_USB_MUX_VIRTUAL diff --git a/common/charge_manager.c b/common/charge_manager.c index eeac1211fb..eeae350f10 100644 --- a/common/charge_manager.c +++ b/common/charge_manager.c @@ -889,8 +889,7 @@ int charge_manager_get_active_charge_port(void) */ int charge_manager_get_charger_current(void) { - return (charge_current != CHARGE_CURRENT_UNINITIALIZED) ? - charge_current : 0; + return charge_current; } /** diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 611f60b2a1..8ff268709c 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -571,13 +571,15 @@ void charger_init(void) } DECLARE_HOOK(HOOK_INIT, charger_init, HOOK_PRIO_DEFAULT); -int get_desired_input_current(enum battery_present batt_present, - const struct charger_info * const info) +static int get_desired_input_current(enum battery_present batt_present, + const struct charger_info * const info) { if (batt_present == BP_YES || system_is_locked()) { #ifdef CONFIG_CHARGE_MANAGER - return MAX(CONFIG_CHARGER_INPUT_CURRENT, - charge_manager_get_charger_current()); + int ilim = charge_manager_get_charger_current(); + return ilim == CHARGE_CURRENT_UNINITIALIZED ? + CHARGE_CURRENT_UNINITIALIZED : + MAX(CONFIG_CHARGER_INPUT_CURRENT, ilim); #else return CONFIG_CHARGER_INPUT_CURRENT; #endif @@ -640,8 +642,10 @@ void charger_task(void) if (rv != EC_SUCCESS) { problem(PR_POST_INIT, rv); } else { - rv = charger_set_input_current( - curr.desired_input_current); + if (curr.desired_input_current != + CHARGE_CURRENT_UNINITIALIZED) + rv = charger_set_input_current( + curr.desired_input_current); if (rv != EC_SUCCESS) problem(PR_SET_INPUT_CURR, rv); else @@ -666,7 +670,10 @@ void charger_task(void) curr.desired_input_current = get_desired_input_current(prev_bp, info); - charger_set_input_current(curr.desired_input_current); + if (curr.desired_input_current != + CHARGE_CURRENT_UNINITIALIZED) + charger_set_input_current( + curr.desired_input_current); hook_notify(HOOK_BATTERY_SOC_CHANGE); } diff --git a/include/charge_manager.h b/include/charge_manager.h index 3623bc1635..51007f3d7b 100644 --- a/include/charge_manager.h +++ b/include/charge_manager.h @@ -83,7 +83,7 @@ int charge_manager_get_active_charge_port(void); /* Return the power limit (uW) set by charge manager. */ int charge_manager_get_power_limit_uw(void); -/* Return the charger current (mA) value. */ +/* Return the charger current (mA) value or CHARGE_CURRENT_UNINITIALIZED. */ int charge_manager_get_charger_current(void); #ifdef CONFIG_USB_PD_LOGGING |