summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
Diffstat (limited to 'board')
-rw-r--r--board/kukui/led.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/board/kukui/led.c b/board/kukui/led.c
index 0d7ec4556b..9de4ac0925 100644
--- a/board/kukui/led.c
+++ b/board/kukui/led.c
@@ -15,6 +15,8 @@ const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED };
const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
+static enum charge_state prv_chstate = PWR_STATE_INIT;
+
#define LED_OFF MT6370_LED_ID_OFF
#define LED_RED MT6370_LED_ID1
#define LED_GREEN MT6370_LED_ID2
@@ -27,7 +29,6 @@ const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
static void kukui_led_set_battery(void)
{
- static enum charge_state prv_chstate = PWR_STATE_UNCHANGE;
enum charge_state chstate;
uint8_t br[EC_LED_COLOR_COUNT] = { 0 };
@@ -93,10 +94,21 @@ int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
return EC_SUCCESS;
}
+/*
+ * Reset prv_chstate so that led can be updated immediately once
+ * auto-controlled.
+ */
+static void led_reset_auto_control(void)
+{
+ prv_chstate = PWR_STATE_INIT;
+}
+
/* Called by hook task every 1 sec */
static void led_second(void)
{
if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
kukui_led_set_battery();
+ else
+ led_reset_auto_control();
}
DECLARE_HOOK(HOOK_SECOND, led_second, HOOK_PRIO_DEFAULT);