summaryrefslogtreecommitdiff
path: root/common/charge_state_v2.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-09-16 14:36:47 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-21 19:38:00 -0700
commit0821405e40fa2634038d11d580b73076d7416d7d (patch)
tree39eec64ce205e218d4b1a3fd8c8e98c96d622efd /common/charge_state_v2.c
parent27a5f046320b9274b247f19ee339bbf7f787abe6 (diff)
downloadchrome-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.c21
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);
}