diff options
author | wen zhang <zhangwen6@huaqin.corp-partner.google.com> | 2023-04-23 17:01:52 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-05-17 03:47:23 +0000 |
commit | 764c88f6b9a4f2363609a5f5bf0d4ce3dee7250d (patch) | |
tree | 519fdcd27f94e7397e6cb8324c421237d72a18f9 | |
parent | b34dc2ae9022e2fbb57ae6477891ff32954c62fd (diff) | |
download | chrome-ec-764c88f6b9a4f2363609a5f5bf0d4ce3dee7250d.tar.gz |
screebo: Implement LED behavior
This defines the LED's behavior according to
the OEM specification. Check more detail in the bug.
BUG=b:278153037
TEST=1.ectool led battery {color} can set the right color
2.led works as intended behavior in different states
Change-Id: I42b67170d0d07554626b2a0158cebc8406be60a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4463817
Tested-by: wen zhang <zhangwen6@huaqin.corp-partner.google.com>
Reviewed-by: caveh jalali <caveh@chromium.org>
Commit-Queue: wen zhang <zhangwen6@huaqin.corp-partner.google.com>
Reviewed-by: Mike Lee <mike5@huaqin.corp-partner.google.com>
-rw-r--r-- | zephyr/program/rex/screebo/led_pins.dtsi | 31 | ||||
-rw-r--r-- | zephyr/program/rex/screebo/led_policy.dtsi | 140 | ||||
-rw-r--r-- | zephyr/program/rex/screebo/project.overlay | 2 |
3 files changed, 173 insertions, 0 deletions
diff --git a/zephyr/program/rex/screebo/led_pins.dtsi b/zephyr/program/rex/screebo/led_pins.dtsi new file mode 100644 index 0000000000..a71f0562d0 --- /dev/null +++ b/zephyr/program/rex/screebo/led_pins.dtsi @@ -0,0 +1,31 @@ +/* Copyright 2023 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/ { + gpio-led-pins { + compatible = "cros-ec,gpio-led-pins"; + + combo_led: combo-led { + led-id = "EC_LED_ID_BATTERY_LED"; + led-pins = <&gpio_led_1_l &gpio_led_2_l>; + color_off: color-off { + led-color = "LED_OFF"; + led-values = <1 1>; + }; + + color_amber: color-amber { + led-color = "LED_AMBER"; + br-color = "EC_LED_COLOR_AMBER"; + led-values = <1 0>; + }; + + color_white: color-white { + led-color = "LED_WHITE"; + br-color = "EC_LED_COLOR_WHITE"; + led-values = <0 1>; + }; + }; + }; +}; diff --git a/zephyr/program/rex/screebo/led_policy.dtsi b/zephyr/program/rex/screebo/led_policy.dtsi new file mode 100644 index 0000000000..d3e2a53351 --- /dev/null +++ b/zephyr/program/rex/screebo/led_policy.dtsi @@ -0,0 +1,140 @@ +#include <dt-bindings/battery.h> + +/ { + led-colors { + compatible = "cros-ec,led-policy"; + + power-state-charge-lvl-1 { + charge-state = "PWR_STATE_CHARGE"; + + /* Battery display percent range (>= Empty, <= 94%) */ + batt-lvl = <BATTERY_LEVEL_EMPTY 94>; + + color-0 { + led-color = <&color_amber>; + }; + }; + + power-state-charge-lvl-2 { + charge-state = "PWR_STATE_CHARGE"; + + /* Battery display percent range (>= 95) */ + batt-lvl = <95 100>; + + color-0 { + led-color = <&color_white>; + }; + }; + + power-state-near-full { + charge-state = "PWR_STATE_CHARGE_NEAR_FULL"; + + color-0 { + led-color = <&color_white>; + }; + }; + + power-state-discharge-s0 { + charge-state = "PWR_STATE_DISCHARGE"; + chipset-state = "POWER_S0"; + /* Battery display percent range (>= 11%, <= 100%) */ + batt-lvl = <(BATTERY_LEVEL_LOW + 1) BATTERY_LEVEL_FULL>; + + color-0 { + led-color = <&color_white>; + }; + }; + + power-state-discharge-s0-batt-low { + charge-state = "PWR_STATE_DISCHARGE"; + chipset-state = "POWER_S0"; + /* Battery display percent range (>= 0, <= 10%) */ + batt-lvl = <BATTERY_LEVEL_EMPTY BATTERY_LEVEL_LOW>; + + /* Amber 1 sec on, 3 sec off */ + color-0 { + led-color = <&color_amber>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_off>; + period-ms = <3000>; + }; + }; + + power-state-discharge-s3 { + charge-state = "PWR_STATE_DISCHARGE"; + chipset-state = "POWER_S3"; + + /* White 1 sec on, 3 sec off */ + color-0 { + led-color = <&color_white>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_off>; + period-ms = <3000>; + }; + }; + + power-state-discharge-s5 { + charge-state = "PWR_STATE_DISCHARGE"; + chipset-state = "POWER_S5"; + + color-0 { + led-color = <&color_off>; + }; + }; + + power-state-error-s0 { + charge-state = "PWR_STATE_ERROR"; + chipset-state = "POWER_S0"; + /* Amber 1 sec on, 1 sec off */ + color-0 { + led-color = <&color_amber>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_off>; + period-ms = <1000>; + }; + }; + + power-state-error-s3 { + charge-state = "PWR_STATE_ERROR"; + chipset-state = "POWER_S3"; + /* White 1 sec on, 3 sec off */ + color-0 { + led-color = <&color_white>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_off>; + period-ms = <3000>; + }; + }; + + power-state-error-s5 { + charge-state = "PWR_STATE_ERROR"; + chipset-state = "POWER_S5"; + + color-0 { + led-color = <&color_off>; + }; + }; + + power-state-forced-idle { + charge-state = "PWR_STATE_FORCED_IDLE"; + + /* White 2 sec on, Amber 2 sec on */ + color-0 { + led-color = <&color_white>; + period-ms = <2000>; + }; + color-1 { + led-color = <&color_amber>; + period-ms = <2000>; + }; + }; + }; +}; diff --git a/zephyr/program/rex/screebo/project.overlay b/zephyr/program/rex/screebo/project.overlay index 35156be4f4..f1f13d91cb 100644 --- a/zephyr/program/rex/screebo/project.overlay +++ b/zephyr/program/rex/screebo/project.overlay @@ -13,6 +13,8 @@ #include "../usbc.dtsi" /* Screebo project DTS includes */ +#include "led_pins.dtsi" +#include "led_policy.dtsi" #include "temp_sensors.dtsi" / { |