diff options
author | Devin Lu <devin.lu@quantatw.com> | 2019-04-12 16:11:53 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-06-15 00:04:59 +0000 |
commit | 118975fb5985550abb88d2a2fea525c7f31f9852 (patch) | |
tree | e5b5275372e13a06edf1965a5c8e172c7776d19a /baseboard/hatch | |
parent | 2dc17781c1a41e3c5d06d6155cac5e17e75f128a (diff) | |
download | chrome-ec-118975fb5985550abb88d2a2fea525c7f31f9852.tar.gz |
hatch: move forward led_states to common/led_onoff_states
This patch follows CL:1556869 to move forward led_states to common.
BUG=b:126460269
BRANCH=none
TEST=make buildall -j
Change-Id: I94f36d20c7c180db0e1cc7c9732711af70002133
Signed-off-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1564496
Tested-by: Scott Collyer <scollyer@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Diffstat (limited to 'baseboard/hatch')
-rw-r--r-- | baseboard/hatch/baseboard.h | 1 | ||||
-rw-r--r-- | baseboard/hatch/build.mk | 1 | ||||
-rw-r--r-- | baseboard/hatch/led_states.c | 133 | ||||
-rw-r--r-- | baseboard/hatch/led_states.h | 69 |
4 files changed, 1 insertions, 203 deletions
diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h index 706e1fe5d8..3926108c27 100644 --- a/baseboard/hatch/baseboard.h +++ b/baseboard/hatch/baseboard.h @@ -35,6 +35,7 @@ #define CONFIG_CROS_BOARD_INFO #define CONFIG_DPTF #define CONFIG_HIBERNATE_PSL +#define CONFIG_LED_ONOFF_STATES #define CONFIG_PWM #define CONFIG_VBOOT_HASH #define CONFIG_VSTORE diff --git a/baseboard/hatch/build.mk b/baseboard/hatch/build.mk index 85cfaff6f3..864225f605 100644 --- a/baseboard/hatch/build.mk +++ b/baseboard/hatch/build.mk @@ -8,5 +8,4 @@ baseboard-y=baseboard.o baseboard-$(CONFIG_BATTERY_SMART)+=battery.o -baseboard-$(CONFIG_LED_COMMON)+=led_states.o baseboard-$(CONFIG_USB_POWER_DELIVERY)+=usb_pd_policy.o diff --git a/baseboard/hatch/led_states.c b/baseboard/hatch/led_states.c deleted file mode 100644 index e342946bca..0000000000 --- a/baseboard/hatch/led_states.c +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright 2018 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - * - * Battery LED state control for hatch boards - */ - -#include "battery.h" -#include "charge_state.h" -#include "chipset.h" -#include "console.h" -#include "ec_commands.h" -#include "extpower.h" -#include "hooks.h" -#include "led_common.h" -#include "led_states.h" - -#define CPRINTS(format, args...) cprints(CC_GPIO, format, ## args) - -static enum led_states led_get_state(void) -{ - int charge_lvl; - enum led_states new_state = LED_NUM_STATES; - - switch (charge_get_state()) { - case PWR_STATE_CHARGE: - /* Get percent charge */ - charge_lvl = charge_get_percent(); - /* Determine which charge state to use */ - if (charge_lvl < led_charge_lvl_1) - new_state = STATE_CHARGING_LVL_1; - else if (charge_lvl < led_charge_lvl_2) - new_state = STATE_CHARGING_LVL_2; - else - new_state = STATE_CHARGING_FULL_CHARGE; - break; - case PWR_STATE_DISCHARGE_FULL: - if (extpower_is_present()) { - new_state = STATE_CHARGING_FULL_CHARGE; - break; - } - /* Intentional fall-through */ - case PWR_STATE_DISCHARGE /* and PWR_STATE_DISCHARGE_FULL */: - if (chipset_in_state(CHIPSET_STATE_ON)) - new_state = STATE_DISCHARGE_S0; - else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) - new_state = STATE_DISCHARGE_S3; - else - new_state = STATE_DISCHARGE_S5; - break; - case PWR_STATE_ERROR: - new_state = STATE_BATTERY_ERROR; - break; - case PWR_STATE_CHARGE_NEAR_FULL: - 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 - new_state = STATE_DISCHARGE_S0; - break; - default: - /* Other states don't alter LED behavior */ - break; - } - - return new_state; -} - -static void led_update_battery(void) -{ - static uint8_t ticks, period; - static int led_state = LED_NUM_STATES; - int phase; - enum led_states desired_state = led_get_state(); - - /* - * We always need to check the current state since the value could - * have been manually overwritten. If we're in a new valid state, - * update our ticks and period info. If our new state isn't defined, - * continue using the previous one. - */ - if (desired_state != led_state && desired_state < LED_NUM_STATES) { - /* State is changing */ - led_state = desired_state; - /* Reset ticks and period when state changes */ - ticks = 0; - - period = led_bat_state_table[led_state][LED_PHASE_0].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); - led_set_color_battery(LED_OFF); - return; - } - - /* - * 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; - ticks = (ticks + 1) % period; - - /* Set the color for the given state and phase */ - led_set_color_battery(led_bat_state_table[led_state][phase].color); -} - -static void led_init(void) -{ - /* If battery LED is enabled, set it to "off" to start with */ - if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED)) - led_set_color_battery(LED_OFF); -} -DECLARE_HOOK(HOOK_INIT, led_init, HOOK_PRIO_DEFAULT); - -/* Called by hook task every hook tick (200 msec) */ -static void led_update(void) -{ - /* - * If battery LED is enabled, set its state based on our power and - * charge - */ - if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED)) - led_update_battery(); -} -DECLARE_HOOK(HOOK_TICK, led_update, HOOK_PRIO_DEFAULT); diff --git a/baseboard/hatch/led_states.h b/baseboard/hatch/led_states.h deleted file mode 100644 index d7ae58c005..0000000000 --- a/baseboard/hatch/led_states.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright 2019 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - * - * Common functions for stateful LEDs (charger) - */ - -#ifndef __CROS_EC_BASEBOARD_LED_H -#define __CROS_EC_BASEBOARD_LED_H - -#include "ec_commands.h" - -#define LED_INDEFINITE UINT8_MAX -#define LED_ONE_SEC (1000 / HOOK_TICK_INTERVAL_MS) -#define LED_OFF EC_LED_COLOR_COUNT - -/* - * All LED states should have one phase defined, - * and an additional phase can be defined for blinking - */ -enum led_phase { - LED_PHASE_0, - LED_PHASE_1, - LED_NUM_PHASES -}; - -/* - * STATE_CHARGING_LVL_1 is when 0 <= charge_percentage < led_charge_level_1 - * STATE_CHARGING_LVL_2 is when led_chg_level_1 <= chg_% < led_charge_level_2 - * STATE_CHARGING_FULL_CHARGE is when led_charge_level_2 <= charge_% < 100 - */ -enum led_states { - STATE_CHARGING_LVL_1, - STATE_CHARGING_LVL_2, - STATE_CHARGING_FULL_CHARGE, - STATE_DISCHARGE_S0, - STATE_DISCHARGE_S0_BAT_LOW, - STATE_DISCHARGE_S3, - STATE_DISCHARGE_S5, - STATE_BATTERY_ERROR, - STATE_FACTORY_TEST, - LED_NUM_STATES -}; - -struct led_descriptor { - enum ec_led_colors color; - uint8_t time; -}; - - -/* Charging LED state table - defined in board's led.c */ -extern struct led_descriptor - led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES]; - -/* Charging LED state level 1 - defined in board's led.c */ -extern const int led_charge_lvl_1; - -/* Charging LED state level 2 - defined in board's led.c */ -extern const int led_charge_lvl_2; - -/** - * Set battery LED color - defined in board's led.c - * - * @param color Color to set on battery LED - * - */ -void led_set_color_battery(enum ec_led_colors color); - -#endif /* __CROS_EC_BASEBOARD_LED_H */ |