Skip to content

Commit da2619e

Browse files
LeoCX-Tsaiquinchou77
authored andcommitted
fwk: avoid reset timer trigger clear charger limit
when AC drop will trigger extender reset timer and if timer times end will set back the charger mode to normal but if charger limit is active we should keep the status. BRANCH=fwk-main BUG=https://app.clickup.com/t/86et2u0ve (#1) TEST= test on azalea, setting charger limit to 80% and batt extender reset time to 1 min into S0, plug-out AC wait 2min than plug-in AC, check charger mode still discharge or Idle Signed-off-by: LeoCX_Tsai <LeoCX_Tsai@compal.com> (cherry picked from commit 1d228d5)
1 parent 902ed55 commit da2619e

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

baseboard/fwk/battery_extender.c

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ int charger_sustainer_percentage(void)
7777
return charging_maximum_level;
7878
}
7979

80+
void charger_sustainer_reset(void)
81+
{
82+
old_charger_limit = 0;
83+
battery_sustainer_set(-1, -1);
84+
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
85+
}
86+
8087
static void battery_percentage_control(void)
8188
{
8289
if (charging_maximum_level == NEED_RESTORE) {
@@ -86,9 +93,9 @@ static void battery_percentage_control(void)
8693
}
8794

8895
if (charging_maximum_level & CHG_LIMIT_OVERRIDE ||
89-
!charging_maximum_level) {
90-
battery_sustainer_set(-1, -1);
91-
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
96+
!charging_maximum_level ||
97+
charging_maximum_level == 100) {
98+
charger_sustainer_reset();
9299
return;
93100
}
94101

@@ -139,8 +146,10 @@ void battery_extender(void)
139146
now.val + battery_extender_trigger;
140147
batt_extender_deadline_stage2.val =
141148
now.val + battery_extender_trigger + 2*DAY;
142-
battery_sustainer_set(-1, -1);
143-
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
149+
/* if charger limit has been set don't clear sustainer and charger mode */
150+
if (charger_sustainer_percentage() == 100) {
151+
charger_sustainer_reset();
152+
}
144153
}
145154

146155
if (batt_extender_deadline_stage2.val &&
@@ -197,8 +206,7 @@ static enum ec_status battery_extender_hc(struct host_cmd_handler_args *args)
197206
if (batt_extender_disable) {
198207
/* if charger limit has been set don't control sustainer again */
199208
if (charger_sustainer_percentage() == 100) {
200-
battery_sustainer_set(-1, -1);
201-
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
209+
charger_sustainer_reset();
202210
}
203211
stage = BATT_EXTENDER_STAGE_0;
204212
}
@@ -325,8 +333,7 @@ static int cmd_batt_extender(int argc, char **argv)
325333
CPRINTS("battery extender %s",
326334
disable ? "enabled" : "disabled");
327335
if (batt_extender_disable) {
328-
battery_sustainer_set(-1, -1);
329-
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
336+
charger_sustainer_reset();
330337
stage = BATT_EXTENDER_STAGE_0;
331338
} else {
332339
if (battery_extender_reset) {
@@ -387,6 +394,14 @@ static int cmd_batt_extender(int argc, char **argv)
387394
print_time_offset(reset_deadline.val, now.val);
388395
}
389396
CPRINTF("\tsustainer percentage:\n");
397+
if (stage == BATT_EXTENDER_STAGE_1) {
398+
sustainer_lower = MIN(90, sustainer_lower);
399+
sustainer_upper = MIN(95, sustainer_upper);
400+
} else if (stage == BATT_EXTENDER_STAGE_2) {
401+
sustainer_lower = MIN(85, sustainer_lower);
402+
sustainer_upper = MIN(87, sustainer_upper);
403+
}
404+
390405
CPRINTF("\tlower: %d, upper: %d\n", sustainer_lower, sustainer_upper);
391406
CPRINTF("\tUser charge limit:%d\n", charging_maximum_level);
392407
}

0 commit comments

Comments
 (0)