diff options
-rw-r--r-- | common/charge_state_v2.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index cb742f1bb6..7a926cfb54 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -1044,6 +1044,28 @@ int charge_prevent_power_on(int power_button_pressed) )); #endif +#ifdef CONFIG_CHARGE_MANAGER + /* Always prevent power on until charge current is initialized */ + if (extpower_is_present() && + (charge_manager_get_charger_current() == + CHARGE_CURRENT_UNINITIALIZED)) + prevent_power_on = 1; +#ifdef CONFIG_BATTERY_HW_PRESENT_CUSTOM + /* + * If battery is NOT physically present then prevent power on until + * charge manager provides at least LIKELY_PD_USBC_POWER_MW. + */ + if (extpower_is_present() && battery_hw_present() == BP_NO && + charge_manager_get_power_limit_uw() < +#ifdef CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT + MIN(LIKELY_PD_USBC_POWER_MW * 1000, + CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW * 1000)) +#else + (LIKELY_PD_USBC_POWER_MW * 1000)) +#endif + prevent_power_on = 1; +#endif +#endif return prevent_power_on; } |