Skip to content

Commit f5666e1

Browse files
committed
fwk: move battery extender to use common
rewrite our timer based extender functionality to use common battery extender functionality as upstream. BRANCH=marigold BUG=https://app.clickup.com/t/86eq06zen TEST=When the timer expired the battery SOC will be lowered to 90-95% for stage 1, and 85-87 for stage 2. The battery extender will be reset after going off AC for 30 minutes. toggling enable/disable will reactivate the timers -get the charge state and battery extender setting chgstate battextender - set the deadline timer values sometime in the future. battextender timeext 15 s battextender timeext2 20 s battextender timerst 20 s - set the reload values for trigger and reset battextender trigger 60 s battextender reset 30 s battextender enable battextender disable Signed-off-by: Kieran Levin <[email protected]>
1 parent c0b661b commit f5666e1

File tree

4 files changed

+198
-231
lines changed

4 files changed

+198
-231
lines changed

common/charge_state.c

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ test_export_static bool battery_sustainer_enabled(void)
217217
return sustain_soc.lower != -1 && sustain_soc.upper != -1;
218218
}
219219

220-
static int battery_sustainer_set(int8_t lower, int8_t upper)
220+
int battery_sustainer_set(int8_t lower, int8_t upper)
221221
{
222222
if (lower == -1 || upper == -1) {
223223
if (battery_sustainer_enabled()) {
@@ -491,12 +491,6 @@ int charge_request(bool use_curr, bool is_full)
491491
#endif
492492
}
493493

494-
#ifdef CONFIG_CUSTOMIZED_DESIGN
495-
/* Override the voltage if the battery extender is on */
496-
if (battery_extender_stage_voltage(battery_get_info()->voltage_max))
497-
voltage = battery_extender_stage_voltage(battery_get_info()->voltage_max);
498-
#endif
499-
500494
if (curr.ac) {
501495
if (prev_volt != voltage || prev_curr != current)
502496
CPRINTS("%s(%dmV, %dmA)", __func__, voltage, current);
@@ -1719,15 +1713,6 @@ void charger_task(void *u)
17191713

17201714
prev_full = is_full;
17211715

1722-
#ifdef CONFIG_CUSTOMIZED_DESIGN
1723-
/**
1724-
* Run the battery extender function to check the timer,
1725-
* if the timer expired, will override the voltage in the
1726-
* charge_request() function.
1727-
*/
1728-
battery_extender();
1729-
#endif
1730-
17311716
adjust_requested_vi(info, is_full);
17321717

17331718
process_preferred_voltage();

include/charge_state.h

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -427,23 +427,20 @@ int board_should_charger_bypass(void);
427427
int board_want_charger_change_mode(void);
428428
#endif
429429

430-
/* Config Charger */
431-
#include "charge_state.h"
432-
433-
#ifdef CONFIG_CUSTOMIZED_DESIGN
434430
/**
435-
* Callback for boards to return voltage value.
431+
* Set the battery sustainer mode.
436432
*
437-
* @param voltage battery maximum voltage
438-
* @return battery extender stage voltage (stage1: 97% * voltage; stage2: 96% * voltage).
433+
* @param lower: lower battery soc charge limit [1-100%] or -1 to disable
434+
* @param upper: upper battery soc charge limit [1-100%] or -1 to disable
435+
*
436+
* @return EC_SUCCESS or EC_ERROR_INVAL
439437
*/
440-
int battery_extender_stage_voltage(uint16_t voltage);
438+
int battery_sustainer_set(int8_t lower, int8_t upper);
441439

442-
/**
443-
* Callback for boards to count the battery extender timer.
444-
*/
445-
void battery_extender(void);
440+
/* Config Charger */
441+
#include "charge_state.h"
446442

443+
#ifdef CONFIG_CUSTOMIZED_DESIGN
447444
void battery_customize(struct charge_state_data *curr_batt);
448445
#endif
449446

zephyr/program/framework/include/board_host_command.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -543,16 +543,19 @@ struct ec_response_get_pd_port_state {
543543

544544
struct ec_params_battery_extender {
545545
uint8_t disable;
546-
uint8_t days;
547-
uint16_t minutes;
546+
uint8_t trigger_days;
547+
uint16_t reset_minutes;
548548
uint8_t cmd;
549549
uint8_t manual;
550550
} __ec_align1;
551551

552552
struct ec_response_battery_extender {
553553
uint8_t current_stage;
554-
uint16_t days;
555-
uint16_t minutes;
554+
uint16_t trigger_days;
555+
uint16_t reset_minutes;
556+
uint8_t disable;
557+
uint64_t trigger_timedelta;
558+
uint64_t reset_timedelta;
556559
} __ec_align1;
557560

558561
enum battery_extender_cmd {

0 commit comments

Comments
 (0)