diff options
-rw-r--r-- | zephyr/program/rex/led.dtsi | 119 | ||||
-rw-r--r-- | zephyr/program/rex/rex/led_pins.dtsi | 56 | ||||
-rw-r--r-- | zephyr/program/rex/rex/led_policy.dtsi | 168 | ||||
-rw-r--r-- | zephyr/program/rex/rex/project.overlay | 5 |
4 files changed, 228 insertions, 120 deletions
diff --git a/zephyr/program/rex/led.dtsi b/zephyr/program/rex/led.dtsi deleted file mode 100644 index e2bd164629..0000000000 --- a/zephyr/program/rex/led.dtsi +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright 2022 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"; - - color_off: color-off { - led-color = "LED_OFF"; - led-id = "EC_LED_ID_BATTERY_LED"; - led-pins = <&gpio_led_1_l &gpio_led_2_l>; - led-values = <1 1>; - }; - - color_white: color-white { - led-color = "LED_WHITE"; - led-id = "EC_LED_ID_BATTERY_LED"; - br-color = "EC_LED_COLOR_WHITE"; - led-pins = <&gpio_led_1_l &gpio_led_2_l>; - led-values = <1 0>; - }; - - color_amber: color-amber { - led-color = "LED_AMBER"; - led-id = "EC_LED_ID_BATTERY_LED"; - br-color = "EC_LED_COLOR_AMBER"; - led-pins = <&gpio_led_1_l &gpio_led_2_l>; - led-values = <0 1>; - }; - }; - - led-colors { - compatible = "cros-ec,led-policy"; - - power-state-charge { - charge-state = "PWR_STATE_CHARGE"; - - color-0 { - led-color = <&color_amber>; - }; - }; - - power-state-discharge-s0 { - charge-state = "PWR_STATE_DISCHARGE"; - chipset-state = "POWER_S0"; - - color-0 { - led-color = <&color_off>; - }; - }; - - power-state-discharge-s3 { - charge-state = "PWR_STATE_DISCHARGE"; - chipset-state = "POWER_S3"; - - 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 { - charge-state = "PWR_STATE_ERROR"; - - color-0 { - led-color = <&color_white>; - period-ms = <1000>; - }; - color-1 { - led-color = <&color_off>; - period-ms = <1000>; - }; - }; - - power-state-near-full { - charge-state = "PWR_STATE_CHARGE_NEAR_FULL"; - - color-0 { - led-color = <&color_white>; - }; - }; - - power-state-forced-idle { - charge-state = "PWR_STATE_FORCED_IDLE"; - - color-0 { - led-color = <&color_white>; - period-ms = <2000>; - }; - color-1 { - led-color = <&color_amber>; - period-ms = <2000>; - }; - }; - - power-state-idle-default { - charge-state = "PWR_STATE_IDLE"; - - color-0 { - led-color = <&color_white>; - }; - }; - }; -}; diff --git a/zephyr/program/rex/rex/led_pins.dtsi b/zephyr/program/rex/rex/led_pins.dtsi new file mode 100644 index 0000000000..e1d08ab9d2 --- /dev/null +++ b/zephyr/program/rex/rex/led_pins.dtsi @@ -0,0 +1,56 @@ +/* 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"; + + color_off_left: color-off-left { + led-color = "LED_OFF"; + led-id = "EC_LED_ID_LEFT_LED"; + led-pins = <&gpio_led_1_l &gpio_led_2_l>; + led-values = <1 1>; + }; + + color_off_right: color-off-right { + led-color = "LED_OFF"; + led-id = "EC_LED_ID_RIGHT_LED"; + led-pins = <&gpio_led_3_l &gpio_led_4_l>; + led-values = <1 1>; + }; + + color_amber_left: color-amber-left { + led-color = "LED_AMBER"; + led-id = "EC_LED_ID_LEFT_LED"; + br-color = "EC_LED_COLOR_AMBER"; + led-pins = <&gpio_led_1_l &gpio_led_2_l>; + led-values = <0 1>; + }; + + color_amber_right: color-amber-right { + led-color = "LED_AMBER"; + led-id = "EC_LED_ID_RIGHT_LED"; + br-color = "EC_LED_COLOR_AMBER"; + led-pins = <&gpio_led_3_l &gpio_led_4_l>; + led-values = <0 1>; + }; + + color_white_left: color-white-left { + led-color = "LED_WHITE"; + led-id = "EC_LED_ID_LEFT_LED"; + br-color = "EC_LED_COLOR_WHITE"; + led-pins = <&gpio_led_1_l &gpio_led_2_l>; + led-values = <1 0>; + }; + + color_white_right: color-white-right { + led-color = "LED_WHITE"; + led-id = "EC_LED_ID_RIGHT_LED"; + br-color = "EC_LED_COLOR_WHITE"; + led-pins = <&gpio_led_3_l &gpio_led_4_l>; + led-values = <1 0>; + }; + }; +}; diff --git a/zephyr/program/rex/rex/led_policy.dtsi b/zephyr/program/rex/rex/led_policy.dtsi new file mode 100644 index 0000000000..ad6e63130d --- /dev/null +++ b/zephyr/program/rex/rex/led_policy.dtsi @@ -0,0 +1,168 @@ +#include <dt-bindings/battery.h> + +/ { + led-colors { + compatible = "cros-ec,led-policy"; + + power-state-near-full-left { + charge-state = "PWR_STATE_CHARGE_NEAR_FULL"; + charge-port = <0>; /* Left port */ + + /* Turn off the right LED */ + color-0 { + led-color = <&color_off_right>; + }; + /* Left LED to White */ + color-1 { + led-color = <&color_white_left>; + }; + }; + + power-state-near-full-right { + charge-state = "PWR_STATE_CHARGE_NEAR_FULL"; + charge-port = <1>; /* Right port */ + + /* Turn off the left LED */ + color-0 { + led-color = <&color_off_left>; + }; + /* Right LED to White */ + color-1 { + led-color = <&color_white_right>; + }; + }; + + power-state-charge-left { + charge-state = "PWR_STATE_CHARGE"; + charge-port = <0>; /* Left port */ + + /* Left LED to Amber */ + color-0 { + led-color = <&color_amber_left>; + }; + /* Turn off the right LED */ + color-1 { + led-color = <&color_off_right>; + }; + }; + + power-state-charge-right { + charge-state = "PWR_STATE_CHARGE"; + charge-port = <1>; /* Right port */ + + /* Turn off the left LED */ + color-0 { + led-color = <&color_off_left>; + }; + /* Right LED to Amber */ + color-1 { + led-color = <&color_amber_right>; + }; + }; + + power-state-discharge { + charge-state = "PWR_STATE_DISCHARGE"; + /* Battery percent range (> Low, <= Full) */ + batt-lvl = <(BATTERY_LEVEL_LOW + 1) BATTERY_LEVEL_FULL>; + + /* Turn off both LEDs LED */ + color-0 { + led-color = <&color_off_left>; + }; + color-1 { + led-color = <&color_off_right>; + }; + }; + + power-state-discharge-low { + charge-state = "PWR_STATE_DISCHARGE"; + /* Battery percent range (>= Empty, <= Low) */ + batt-lvl = <BATTERY_LEVEL_EMPTY BATTERY_LEVEL_LOW>; + + /* Blink both LEDs amber at 0.5 Hz */ + color-0 { + led-color = <&color_amber_left>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_amber_right>; + period-ms = <1000>; + }; + color-2 { + led-color = <&color_off_left>; + period-ms = <1000>; + }; + color-3 { + led-color = <&color_off_right>; + period-ms = <1000>; + }; + }; + + power-state-idle { + charge-state = "PWR_STATE_IDLE"; + + /* Blink both LEDs amber at 0.5 Hz */ + color-0 { + led-color = <&color_amber_left>; + period-ms = <1000>; + }; + color-1 { + led-color = <&color_amber_right>; + period-ms = <1000>; + }; + color-2 { + led-color = <&color_white_left>; + period-ms = <1000>; + }; + color-3 { + led-color = <&color_white_right>; + period-ms = <1000>; + }; + }; + + power-state-forced-idle { + charge-state = "PWR_STATE_FORCED_IDLE"; + + /* Blink both LEDs amber at 2 Hz */ + color-0 { + led-color = <&color_amber_left>; + period-ms = <250>; + }; + color-1 { + led-color = <&color_amber_right>; + period-ms = <250>; + }; + color-2 { + led-color = <&color_white_left>; + period-ms = <250>; + }; + color-3 { + led-color = <&color_white_right>; + period-ms = <250>; + }; + }; + + power-state-error { + charge-state = "PWR_STATE_ERROR"; + + /* Blink both LEDs amber at 2 Hz */ + color-0 { + led-color = <&color_amber_left>; + period-ms = <250>; + }; + color-1 { + led-color = <&color_amber_right>; + period-ms = <250>; + }; + color-2 { + led-color = <&color_off_left>; + period-ms = <250>; + }; + color-3 { + led-color = <&color_off_right>; + period-ms = <250>; + }; + }; + + }; +}; diff --git a/zephyr/program/rex/rex/project.overlay b/zephyr/program/rex/rex/project.overlay index b8d5f5ac94..44d2763548 100644 --- a/zephyr/program/rex/rex/project.overlay +++ b/zephyr/program/rex/rex/project.overlay @@ -10,9 +10,12 @@ #include "../generated.dtsi" #include "../interrupts.dtsi" #include "../keyboard.dtsi" -#include "../led.dtsi" #include "../motionsense.dtsi" #include "../power_signals.dtsi" #include "../rex.dtsi" #include "../temp_sensors.dtsi" #include "../usbc.dtsi" + +/* Rex project DTS includes */ +#include "led_pins.dtsi" +#include "led_policy.dtsi" |