diff options
-rw-r--r-- | board/storo/board.h | 3 | ||||
-rw-r--r-- | common/led_onoff_states.c | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/board/storo/board.h b/board/storo/board.h index a6bc89c44f..0693b3f3bc 100644 --- a/board/storo/board.h +++ b/board/storo/board.h @@ -21,6 +21,9 @@ /* Battery */ #define CONFIG_BATTERY_FUEL_GAUGE +#define CONFIG_BATTERY_EXPORT_DISPLAY_SOC +#undef CONFIG_BATT_HOST_SHUTDOWN_PERCENTAGE +#define CONFIG_BATT_HOST_SHUTDOWN_PERCENTAGE 3 /* BC 1.2 */ #define CONFIG_BC12_DETECT_PI3USB9201 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 |