diff options
Diffstat (limited to 'common/led_onoff_states.c')
-rw-r--r-- | common/led_onoff_states.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/common/led_onoff_states.c b/common/led_onoff_states.c index 7b699b4fea..595e8ab10d 100644 --- a/common/led_onoff_states.c +++ b/common/led_onoff_states.c @@ -15,6 +15,7 @@ #include "led_common.h" #include "led_onoff_states.h" #include "system.h" +#include "util.h" #define CPRINTS(format, args...) cprints(CC_GPIO, format, ## args) @@ -35,6 +36,14 @@ __overridable void led_set_color_battery(enum ec_led_colors color) int charge_get_percent(void); #endif +static int led_get_charge_percent(void) +{ + if (IS_ENABLED(CONFIG_BATTERY_EXPORT_DISPLAY_SOC)) + return DIV_ROUND_NEAREST(charge_get_display_charge(), 10); + else + return charge_get_percent(); +} + static enum led_states led_get_state(void) { int charge_lvl; @@ -46,7 +55,7 @@ static enum led_states led_get_state(void) switch (charge_get_state()) { case PWR_STATE_CHARGE: /* Get percent charge */ - charge_lvl = charge_get_percent(); + charge_lvl = led_get_charge_percent(); /* Determine which charge state to use */ if (charge_lvl < led_charge_lvl_1) new_state = STATE_CHARGING_LVL_1; @@ -70,7 +79,7 @@ static enum led_states led_get_state(void) case PWR_STATE_DISCHARGE /* and PWR_STATE_DISCHARGE_FULL */: if (chipset_in_state(CHIPSET_STATE_ON)) { #ifdef CONFIG_LED_ONOFF_STATES_BAT_LOW - if (charge_get_percent() < + if (led_get_charge_percent() < CONFIG_LED_ONOFF_STATES_BAT_LOW) new_state = STATE_DISCHARGE_S0_BAT_LOW; else |