diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-09-16 14:36:47 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-09-21 19:38:00 -0700 |
commit | 0821405e40fa2634038d11d580b73076d7416d7d (patch) | |
tree | 39eec64ce205e218d4b1a3fd8c8e98c96d622efd /common/charge_state_v2.c | |
parent | 27a5f046320b9274b247f19ee339bbf7f787abe6 (diff) | |
download | chrome-ec-0821405e40fa2634038d11d580b73076d7416d7d.tar.gz |
charger v2: Don't set charger current limit if capability is unknown
If charge_manager has not decided on a current limit, don't set a
minimum current limit, since we may brown-out in the no / low-battery
case.
BUG=chrome-os-partner:56139
BRANCH=None
TEST=Manual on kevin, attach cut-off battery, attach OEM charger, verify
system doesn't brown-out due to OC.
Change-Id: Id53eb32c4a8ac9c6d9a0d3f1d700f089a50fcb0f
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/386793
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r-- | common/charge_state_v2.c | 21 |
1 files changed, 14 insertions, 7 deletions
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); } |