summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwen zhang <zhangwen6@huaqin.corp-partner.google.com>2023-04-23 17:01:52 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-05-17 03:47:23 +0000
commit764c88f6b9a4f2363609a5f5bf0d4ce3dee7250d (patch)
tree519fdcd27f94e7397e6cb8324c421237d72a18f9
parentb34dc2ae9022e2fbb57ae6477891ff32954c62fd (diff)
downloadchrome-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.dtsi31
-rw-r--r--zephyr/program/rex/screebo/led_policy.dtsi140
-rw-r--r--zephyr/program/rex/screebo/project.overlay2
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"
/ {