Skip to content

Commit 2f7a9ea

Browse files
LeoCX-TsaiTerrails
authored andcommitted
fwk: set charger control mode after disable battery sustainer
when we disable battery sustainer need manual set the charger control mode because the sustain_battery_soc wouldn't set chg mode(return by !battery_sustainer_enabled) BRANCH=marigold BUG=https://app.clickup.com/t/86eq06zen TEST=when batt extender trigger to stage 2, disable battery extender and make sure the battery starting charge TEST=disable battery extender and enable again check the extender timer is starting count. Signed-off-by: LeoCX_Tsai <[email protected]>
1 parent 9361a4a commit 2f7a9ea

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

common/charge_state.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ static void battery_sustainer_disable(void)
244244

245245
static const char *const state_list[] = { "idle", "discharge", "charge",
246246
"precharge" };
247-
BUILD_ASSERT(ARRAY_SIZE(state_list) == CHARGE_STATE_COUNT);
247+
BUILD_ASSERT(ARRAY_SIZE(state_list) == NUM_STATES_V2);
248248
static const char *const batt_pres[] = {
249249
"NO",
250250
"YES",

include/charge_state.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ int board_want_charger_change_mode(void);
434434
*
435435
* @param lower: lower battery soc charge limit [1-100%] or -1 to disable
436436
* @param upper: upper battery soc charge limit [1-100%] or -1 to disable
437-
*
437+
*
438438
* @return EC_SUCCESS or EC_ERROR_INVAL
439439
*/
440440
int battery_sustainer_set(int8_t lower, int8_t upper);

zephyr/program/framework/src/battery_extender.c

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ static timestamp_t reset_deadline;
4646
static void extender_init(void)
4747
{
4848
timestamp_t now = get_time();
49+
4950
batt_extender_deadline.val =
5051
now.val + battery_extender_trigger;
5152
batt_extender_deadline_stage2.val =
@@ -82,6 +83,7 @@ void battery_extender(void)
8283
batt_extender_deadline_stage2.val =
8384
now.val + battery_extender_trigger + 2*DAY;
8485
battery_sustainer_set(-1, -1);
86+
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
8587
}
8688

8789
if (batt_extender_deadline_stage2.val &&
@@ -139,6 +141,7 @@ static enum ec_status battery_extender_hc(struct host_cmd_handler_args *args)
139141
batt_extender_disable = p->disable;
140142
if (batt_extender_disable) {
141143
battery_sustainer_set(-1, -1);
144+
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
142145
stage = BATT_EXTENDER_STAGE_0;
143146
}
144147
}
@@ -186,23 +189,25 @@ static uint64_t cmd_parse_timestamp(int argc, const char **argv)
186189
} else if (!strncmp(argv[3], "d", 1)) {
187190
time_val *= DAY;
188191
} else {
189-
CPRINTF("invalid option for time scale: %s. Valid options: [s,h,d]\n", argv[3]);
192+
CPRINTF("invalid option for time scale: %s. Valid options: [s,h,d]\n",
193+
argv[3]);
190194
return EC_ERROR_PARAM3;
191195
}
192196
return time_val;
193-
} else {
194-
CPRINTF("invalid parameters:\n");
195-
return 0;
196197
}
198+
199+
CPRINTF("invalid parameters:\n");
200+
return 0;
197201
}
198202

199203
static void print_time_offset(uint64_t t_end, uint64_t t_start)
200204
{
201205
uint64_t t = t_end - t_start;
202206
uint64_t d = TIMES2DAYS(t);
203-
uint64_t h = (t % DAY)/ HOUR;
204-
uint64_t m = (t % HOUR)/ MINUTE;
205-
uint64_t s = (t % MINUTE)/ SECOND;
207+
uint64_t h = (t % DAY) / HOUR;
208+
uint64_t m = (t % HOUR) / MINUTE;
209+
uint64_t s = (t % MINUTE) / SECOND;
210+
206211
if (t_end < t_start) {
207212
CPRINTF("Expired\n");
208213
} else {
@@ -226,11 +231,12 @@ static int cmd_batt_extender(int argc, const char **argv)
226231
disable ? "enabled" : "disabled");
227232
if (batt_extender_disable) {
228233
battery_sustainer_set(-1, -1);
234+
set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
229235
stage = BATT_EXTENDER_STAGE_0;
230236
} else {
231237
if (battery_extender_reset) {
232-
reset_deadline.val =
233-
now.val + battery_extender_reset;
238+
reset_deadline.val =
239+
now.val + battery_extender_reset;
234240
}
235241
if (battery_extender_trigger != 0) {
236242
batt_extender_deadline.val =
@@ -240,7 +246,8 @@ static int cmd_batt_extender(int argc, const char **argv)
240246
}
241247
}
242248
} else if (!strncmp(argv[1], "timeext2", 8)) {
243-
batt_extender_deadline_stage2.val = now.val + cmd_parse_timestamp(argc, argv);
249+
batt_extender_deadline_stage2.val =
250+
now.val + cmd_parse_timestamp(argc, argv);
244251
} else if (!strncmp(argv[1], "timeext", 7)) {
245252
batt_extender_deadline.val = now.val + cmd_parse_timestamp(argc, argv);
246253
} else if (!strncmp(argv[1], "timerst", 7)) {

0 commit comments

Comments
 (0)