summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Lu <devin.lu@quantatw.com>2019-04-12 16:11:53 +0800
committerCommit Bot <commit-bot@chromium.org>2019-06-15 00:04:59 +0000
commit118975fb5985550abb88d2a2fea525c7f31f9852 (patch)
treee5b5275372e13a06edf1965a5c8e172c7776d19a
parent2dc17781c1a41e3c5d06d6155cac5e17e75f128a (diff)
downloadchrome-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>
-rw-r--r--baseboard/hatch/baseboard.h1
-rw-r--r--baseboard/hatch/build.mk1
-rw-r--r--baseboard/hatch/led_states.c133
-rw-r--r--baseboard/hatch/led_states.h69
-rw-r--r--board/hatch/led.c2
-rw-r--r--board/helios/led.c2
-rw-r--r--board/kindred/led.c2
-rw-r--r--board/kohaku/led.c2
8 files changed, 5 insertions, 207 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 */
diff --git a/board/hatch/led.c b/board/hatch/led.c
index ccba8054cb..d6da1d098f 100644
--- a/board/hatch/led.c
+++ b/board/hatch/led.c
@@ -8,7 +8,7 @@
#include "ec_commands.h"
#include "gpio.h"
#include "led_common.h"
-#include "led_states.h"
+#include "led_onoff_states.h"
#include "chipset.h"
#define LED_ON_LVL 0
diff --git a/board/helios/led.c b/board/helios/led.c
index 7dae0277df..e589ffc252 100644
--- a/board/helios/led.c
+++ b/board/helios/led.c
@@ -8,7 +8,7 @@
#include "ec_commands.h"
#include "gpio.h"
#include "led_common.h"
-#include "led_states.h"
+#include "led_onoff_states.h"
#include "chipset.h"
#define LED_ON_LVL 0
diff --git a/board/kindred/led.c b/board/kindred/led.c
index ccba8054cb..d6da1d098f 100644
--- a/board/kindred/led.c
+++ b/board/kindred/led.c
@@ -8,7 +8,7 @@
#include "ec_commands.h"
#include "gpio.h"
#include "led_common.h"
-#include "led_states.h"
+#include "led_onoff_states.h"
#include "chipset.h"
#define LED_ON_LVL 0
diff --git a/board/kohaku/led.c b/board/kohaku/led.c
index e890791d4d..7279243861 100644
--- a/board/kohaku/led.c
+++ b/board/kohaku/led.c
@@ -8,7 +8,7 @@
#include "ec_commands.h"
#include "gpio.h"
#include "led_common.h"
-#include "led_states.h"
+#include "led_onoff_states.h"
#include "chipset.h"
#define LED_ON_LVL 0