@@ -231,12 +231,15 @@ int battery_sustainer_set(int8_t lower, int8_t upper)
231231 return EC_ERROR_INVAL ;
232232}
233233
234+ #if 0 // Not used any more
234235static void battery_sustainer_disable (void )
235236{
236237 battery_sustainer_set (-1 , -1 );
237238}
239+ #endif
238240
239- test_export_static bool battery_sustainer_enabled (void )
241+ //test_export_static bool battery_sustainer_enabled(void)
242+ bool battery_sustainer_enabled (void )
240243{
241244 return sustain_soc .lower != -1 && sustain_soc .upper != -1 ;
242245}
@@ -594,6 +597,9 @@ int set_chg_ctrl_mode(enum ec_charge_control_mode mode)
594597 int current , voltage ;
595598 int rv ;
596599
600+ CPRINTS ("%s: Trying to switch control mode from %s to %s" , __func__ ,
601+ mode_text [local_state .chg_ctl_mode ],
602+ mode_text [mode ]);
597603 current = local_state .manual_current ;
598604 voltage = local_state .manual_voltage ;
599605
@@ -620,8 +626,10 @@ int set_chg_ctrl_mode(enum ec_charge_control_mode mode)
620626
621627 if (IS_ENABLED (CONFIG_CHARGER_DISCHARGE_ON_AC )) {
622628 rv = charger_discharge_on_ac (discharge_on_ac );
623- if (rv != EC_SUCCESS )
629+ if (rv != EC_SUCCESS ) {
630+ CPRINTS ("%s: Returning due to failure of charger_discharge_on_ac() rv=%d" , __func__ , rv );
624631 return rv ;
632+ }
625633 }
626634
627635 /* Commit all atomically */
@@ -946,15 +954,16 @@ sustain_switch_mode(enum ec_charge_control_mode mode)
946954 * We come here only if the soc is already above the
947955 * upper limit at the time the sustainer started.
948956 */
949- new_mode = CHARGE_CONTROL_DISCHARGE ;
957+ //new_mode = CHARGE_CONTROL_DISCHARGE;
958+ new_mode = CHARGE_CONTROL_IDLE ;
950959 } else if (sustain_soc .upper == soc ) {
951960 /*
952961 * We've been charging and finally reached the upper.
953962 * Let's switch to IDLE to stay.
954963 */
955- if (sustain_soc .flags & EC_CHARGE_CONTROL_FLAG_NO_IDLE )
956- new_mode = CHARGE_CONTROL_DISCHARGE ;
957- else
964+ // if (sustain_soc.flags & EC_CHARGE_CONTROL_FLAG_NO_IDLE)
965+ // new_mode = CHARGE_CONTROL_DISCHARGE;
966+ // else
958967 new_mode = CHARGE_CONTROL_IDLE ;
959968 }
960969 break ;
@@ -972,7 +981,8 @@ sustain_switch_mode(enum ec_charge_control_mode mode)
972981 * This can happen only if sustainer is restarted with
973982 * decreased upper limit. Let's discharge to the upper.
974983 */
975- new_mode = CHARGE_CONTROL_DISCHARGE ;
984+ //new_mode = CHARGE_CONTROL_DISCHARGE;
985+ new_mode = CHARGE_CONTROL_IDLE ;
976986 break ;
977987 case CHARGE_CONTROL_DISCHARGE :
978988 /* Discharging actively. */
@@ -1015,9 +1025,10 @@ static void sustain_battery_soc(void)
10151025 return ;
10161026
10171027 rv = set_chg_ctrl_mode (new_mode );
1018- CPRINTS ("%s: %s control mode to %s" , __func__ ,
1028+ CPRINTS ("%s: %s control mode to %s, rv=%d " , __func__ ,
10191029 rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
1020- mode_text [new_mode ]);
1030+ mode_text [new_mode ],
1031+ rv );
10211032}
10221033
10231034static void current_limit_battery_soc (void )
@@ -1045,7 +1056,7 @@ void charger_init(void)
10451056 */
10461057 battery_get_params (& curr .batt );
10471058
1048- battery_sustainer_disable ();
1059+ // battery_sustainer_disable();
10491060}
10501061DECLARE_HOOK (HOOK_INIT , charger_init , HOOK_PRIO_DEFAULT );
10511062
@@ -1279,7 +1290,11 @@ static void process_ac_change(const int chgnum)
12791290 prev_ac = curr .ac ;
12801291 } else {
12811292 /* Some things are only meaningful on AC */
1282- set_chg_ctrl_mode (CHARGE_CONTROL_NORMAL );
1293+ int rv = set_chg_ctrl_mode (CHARGE_CONTROL_NORMAL );
1294+ CPRINTS ("%s: %s control mode to %s, rv=%d" , __func__ ,
1295+ rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
1296+ mode_text [CHARGE_CONTROL_NORMAL ],
1297+ rv );
12831298 battery_seems_dead = 0 ;
12841299 prev_ac = curr .ac ;
12851300
@@ -2143,12 +2158,14 @@ charge_command_charge_control(struct host_cmd_handler_args *args)
21432158
21442159 if (p -> cmd == EC_CHARGE_CONTROL_CMD_SET ) {
21452160 if (p -> mode == CHARGE_CONTROL_NORMAL ) {
2146- rv = battery_sustainer_set (p -> sustain_soc .lower ,
2161+ if ((p -> sustain_soc .lower != -1 ) && (p -> sustain_soc .upper != -1 )) {
2162+ rv = battery_sustainer_set (p -> sustain_soc .lower ,
21472163 p -> sustain_soc .upper );
2148- if (rv == EC_RES_UNAVAILABLE )
2149- return EC_RES_UNAVAILABLE ;
2150- if (rv )
2151- return EC_RES_INVALID_PARAM ;
2164+ if (rv == EC_RES_UNAVAILABLE )
2165+ return EC_RES_UNAVAILABLE ;
2166+ if (rv )
2167+ return EC_RES_INVALID_PARAM ;
2168+ }
21522169 if (args -> version == 2 ) {
21532170 /*
21542171 * V2 uses lower == upper to indicate NO_IDLE.
@@ -2162,7 +2179,7 @@ charge_command_charge_control(struct host_cmd_handler_args *args)
21622179 sustain_soc .flags = p -> flags ;
21632180 }
21642181 } else {
2165- battery_sustainer_disable ();
2182+ // battery_sustainer_disable();
21662183 }
21672184 } else if (p -> cmd == EC_CHARGE_CONTROL_CMD_GET ) {
21682185 r -> mode = get_chg_ctrl_mode ();
@@ -2177,6 +2194,10 @@ charge_command_charge_control(struct host_cmd_handler_args *args)
21772194 }
21782195
21792196 rv = set_chg_ctrl_mode (p -> mode );
2197+ CPRINTS ("%s: %s control mode to %s, rv=%d" , __func__ ,
2198+ rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
2199+ mode_text [p -> mode ],
2200+ rv );
21802201 if (rv != EC_SUCCESS )
21812202 return EC_RES_ERROR ;
21822203
@@ -2425,6 +2446,10 @@ static int command_chgstate(int argc, const char **argv)
24252446 return EC_ERROR_PARAM2 ;
24262447 rv = set_chg_ctrl_mode (val ? CHARGE_CONTROL_IDLE :
24272448 CHARGE_CONTROL_NORMAL );
2449+ CPRINTS ("%s: %s control mode to %s, rv=%d" , __func__ ,
2450+ rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
2451+ mode_text [val ? CHARGE_CONTROL_IDLE : CHARGE_CONTROL_NORMAL ],
2452+ rv );
24282453 if (rv )
24292454 return rv ;
24302455 } else if (!strcasecmp (argv [1 ], "discharge" )) {
@@ -2434,6 +2459,10 @@ static int command_chgstate(int argc, const char **argv)
24342459 return EC_ERROR_PARAM2 ;
24352460 rv = set_chg_ctrl_mode (val ? CHARGE_CONTROL_DISCHARGE :
24362461 CHARGE_CONTROL_NORMAL );
2462+ CPRINTS ("%s: %s control mode to %s, rv=%d" , __func__ ,
2463+ rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
2464+ mode_text [val ? CHARGE_CONTROL_DISCHARGE : CHARGE_CONTROL_NORMAL ],
2465+ rv );
24372466 if (rv )
24382467 return rv ;
24392468 } else if (IS_ENABLED (CONFIG_CHARGE_DEBUG ) &&
0 commit comments