diff options
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r-- | common/charge_state_v2.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 9505194720..f51a03f185 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -53,6 +53,7 @@ enum problem_type { PR_SET_VOLTAGE, PR_SET_CURRENT, PR_SET_MODE, + PR_SET_INPUT_CURR, PR_POST_INIT, PR_CHG_FLAGS, PR_BATT_FLAGS, @@ -65,6 +66,7 @@ static const char * const prob_text[] = { "set voltage", "set current", "set mode", + "set input current", "post init", "chg params", "batt params", @@ -464,6 +466,7 @@ void charger_task(void) /* Initialize all the state */ memset(&curr, 0, sizeof(curr)); curr.batt.is_present = BP_NOT_SURE; + curr.desired_input_current = CONFIG_CHARGER_INPUT_CURRENT; prev_ac = prev_charge = -1; state_machine_force_idle = 0; shutdown_warning_time.val = 0UL; @@ -481,13 +484,20 @@ void charger_task(void) /* * Some chargers are unpowered when the AC is * off, so we'll reinitialize it when AC - * comes back. Try again if it fails. + * comes back and set the input current limit. + * Try again if it fails. */ int rv = charger_post_init(); - if (rv != EC_SUCCESS) + if (rv != EC_SUCCESS) { problem(PR_POST_INIT, rv); - else - prev_ac = curr.ac; + } else { + rv = charger_set_input_current( + curr.desired_input_current); + if (rv != EC_SUCCESS) + problem(PR_SET_INPUT_CURR, rv); + else + prev_ac = curr.ac; + } } else { /* Some things are only meaningful on AC */ state_machine_force_idle = 0; @@ -811,6 +821,12 @@ int charge_temp_sensor_get_val(int idx, int *temp_ptr) return EC_SUCCESS; } +int charge_set_input_current_limit(int ma) +{ + curr.desired_input_current = ma; + return charger_set_input_current(ma); +} + /*****************************************************************************/ /* Hooks */ |