diff options
Diffstat (limited to 'common/led_onoff_states.c')
-rw-r--r-- | common/led_onoff_states.c | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/common/led_onoff_states.c b/common/led_onoff_states.c index 48886e5de3..244257cf1d 100644 --- a/common/led_onoff_states.c +++ b/common/led_onoff_states.c @@ -1,4 +1,4 @@ -/* Copyright 2018 The Chromium OS Authors. All rights reserved. +/* Copyright 2018 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * @@ -17,14 +17,14 @@ #include "system.h" #include "util.h" -#define CPRINTS(format, args...) cprints(CC_GPIO, format, ## args) +#define CPRINTS(format, args...) cprints(CC_GPIO, format, ##args) /* * In order to support the battery LED being optional (ex. for Chromeboxes), * set up default battery table, setter, and variables. */ -__overridable struct led_descriptor - led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES]; +__overridable struct led_descriptor led_bat_state_table[LED_NUM_STATES] + [LED_NUM_PHASES]; __overridable const int led_charge_lvl_1; __overridable const int led_charge_lvl_2; __overridable void led_set_color_battery(enum ec_led_colors color) @@ -43,7 +43,7 @@ static int led_get_charge_percent(void) static enum led_states led_get_state(void) { - int charge_lvl; + int charge_lvl; enum led_states new_state = LED_NUM_STATES; if (!IS_ENABLED(CONFIG_CHARGER)) @@ -58,11 +58,10 @@ static enum led_states led_get_state(void) new_state = STATE_CHARGING_LVL_1; else if (charge_lvl < led_charge_lvl_2) new_state = STATE_CHARGING_LVL_2; + else if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) + new_state = STATE_CHARGING_FULL_S5; else - if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) - new_state = STATE_CHARGING_FULL_S5; - else - new_state = STATE_CHARGING_FULL_CHARGE; + new_state = STATE_CHARGING_FULL_CHARGE; break; case PWR_STATE_DISCHARGE_FULL: if (extpower_is_present()) { @@ -77,7 +76,7 @@ static enum led_states led_get_state(void) if (chipset_in_state(CHIPSET_STATE_ON)) { #ifdef CONFIG_LED_ONOFF_STATES_BAT_LOW if (led_get_charge_percent() < - CONFIG_LED_ONOFF_STATES_BAT_LOW) + CONFIG_LED_ONOFF_STATES_BAT_LOW) new_state = STATE_DISCHARGE_S0_BAT_LOW; else #endif @@ -97,13 +96,14 @@ static enum led_states led_get_state(void) new_state = STATE_CHARGING_FULL_CHARGE; break; case PWR_STATE_IDLE: /* External power connected in IDLE */ - if (charge_get_flags() & CHARGE_FLAG_FORCE_IDLE) - new_state = STATE_FACTORY_TEST; - else if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) + if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) new_state = STATE_DISCHARGE_S5; else new_state = STATE_DISCHARGE_S0; break; + case PWR_STATE_FORCED_IDLE: + new_state = STATE_FACTORY_TEST; + break; default: /* Other states don't alter LED behavior */ break; @@ -147,14 +147,14 @@ static void led_update_battery(void) ticks = 0; period = led_bat_state_table[led_state][LED_PHASE_0].time + - led_bat_state_table[led_state][LED_PHASE_1].time; - + led_bat_state_table[led_state][LED_PHASE_1].time; } /* If this state is undefined, turn the LED off */ if (period == 0) { CPRINTS("Undefined LED behavior for battery state %d," - "turning off LED", led_state); + "turning off LED", + led_state); led_set_color_battery(LED_OFF); return; } @@ -163,8 +163,8 @@ static void led_update_battery(void) * Determine which phase of the state table to use. The phase is * determined if it falls within first phase time duration. */ - phase = ticks < led_bat_state_table[led_state][LED_PHASE_0].time ? - 0 : 1; + phase = ticks < led_bat_state_table[led_state][LED_PHASE_0].time ? 0 : + 1; ticks = (ticks + 1) % period; /* Set the color for the given state and phase */ @@ -176,7 +176,7 @@ static void led_update_battery(void) * table and setter */ __overridable const struct led_descriptor - led_pwr_state_table[PWR_LED_NUM_STATES][LED_NUM_PHASES]; + led_pwr_state_table[PWR_LED_NUM_STATES][LED_NUM_PHASES]; __overridable void led_set_color_power(enum ec_led_colors color) { } @@ -226,14 +226,14 @@ static void led_update_power(void) ticks = 0; period = led_pwr_state_table[led_state][LED_PHASE_0].time + - led_pwr_state_table[led_state][LED_PHASE_1].time; - + led_pwr_state_table[led_state][LED_PHASE_1].time; } /* If this state is undefined, turn the LED off */ if (period == 0) { CPRINTS("Undefined LED behavior for power state %d," - "turning off LED", led_state); + "turning off LED", + led_state); led_set_color_power(LED_OFF); return; } @@ -242,13 +242,12 @@ static void led_update_power(void) * Determine which phase of the state table to use. The phase is * determined if it falls within first phase time duration. */ - phase = ticks < led_pwr_state_table[led_state][LED_PHASE_0].time ? - 0 : 1; + phase = ticks < led_pwr_state_table[led_state][LED_PHASE_0].time ? 0 : + 1; ticks = (ticks + 1) % period; /* Set the color for the given state and phase */ led_set_color_power(led_pwr_state_table[led_state][phase].color); - } static void led_init(void) @@ -260,7 +259,6 @@ static void led_init(void) /* If power LED is enabled, set it to "off" to start with */ if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) led_set_color_power(LED_OFF); - } DECLARE_HOOK(HOOK_INIT, led_init, HOOK_PRIO_DEFAULT); |