summaryrefslogtreecommitdiff
path: root/zephyr/projects/nissa
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/projects/nissa')
-rw-r--r--zephyr/projects/nissa/BUILD.py2
-rw-r--r--zephyr/projects/nissa/CMakeLists.txt1
-rw-r--r--zephyr/projects/nissa/nereid_pwm_leds.dts40
-rw-r--r--zephyr/projects/nissa/nivviks_pwm_leds.dts40
-rw-r--r--zephyr/projects/nissa/prj.conf6
-rw-r--r--zephyr/projects/nissa/src/led.c45
6 files changed, 134 insertions, 0 deletions
diff --git a/zephyr/projects/nissa/BUILD.py b/zephyr/projects/nissa/BUILD.py
index 41d56411d2..618b6401b1 100644
--- a/zephyr/projects/nissa/BUILD.py
+++ b/zephyr/projects/nissa/BUILD.py
@@ -32,6 +32,7 @@ register_nissa_project(
here / "nivviks_motionsense.dts",
here / "nivviks_keyboard.dts",
here / "nivviks_power_signals.dts",
+ here / "nivviks_pwm_leds.dts",
],
extra_kconfig_files=[here / "prj_nivviks.conf"],
)
@@ -45,6 +46,7 @@ register_nissa_project(
here / "nereid_motionsense.dts",
here / "nereid_keyboard.dts",
here / "nereid_power_signals.dts",
+ here / "nereid_pwm_leds.dts",
],
extra_kconfig_files=[here / "prj_nereid.conf"],
)
diff --git a/zephyr/projects/nissa/CMakeLists.txt b/zephyr/projects/nissa/CMakeLists.txt
index ca708221e1..b22422d4ef 100644
--- a/zephyr/projects/nissa/CMakeLists.txt
+++ b/zephyr/projects/nissa/CMakeLists.txt
@@ -8,6 +8,7 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
zephyr_include_directories(include)
zephyr_library_sources("src/common.c")
+zephyr_library_sources("src/led.c")
zephyr_library_sources("src/sub_board.c")
zephyr_library_sources_ifdef(CONFIG_AP_PWRSEQ "src/board_power.c")
diff --git a/zephyr/projects/nissa/nereid_pwm_leds.dts b/zephyr/projects/nissa/nereid_pwm_leds.dts
new file mode 100644
index 0000000000..a25e4487c0
--- /dev/null
+++ b/zephyr/projects/nissa/nereid_pwm_leds.dts
@@ -0,0 +1,40 @@
+/* Copyright 2022 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.
+ */
+
+/ {
+ pwmleds {
+ compatible = "pwm-leds";
+ pwm_led0: pwm_led_0 {
+ pwms = <&pwm1 1 PWM_POLARITY_INVERTED>,
+ <&pwm2 2 PWM_POLARITY_INVERTED>,
+ <&pwm3 3 PWM_POLARITY_INVERTED>;
+ };
+ };
+
+ cros-pwmleds {
+ compatible = "cros-ec,pwm-leds";
+
+ leds = <&pwm_led0>;
+ frequency = <324>;
+
+ /*<red green blue>*/
+ color-map-red = <100 0 0>;
+ color-map-green = < 0 100 0>;
+ color-map-blue = < 0 0 100>;
+ color-map-yellow = < 0 50 50>;
+ color-map-white = <100 100 100>;
+ color-map-amber = <100 20 100>;
+
+ brightness-range = <100 100 100 0 0 0>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pwm_led_0@0 {
+ reg = <0>;
+ ec-led-name = "EC_LED_ID_BATTERY_LED";
+ };
+ };
+};
diff --git a/zephyr/projects/nissa/nivviks_pwm_leds.dts b/zephyr/projects/nissa/nivviks_pwm_leds.dts
new file mode 100644
index 0000000000..de76880cbe
--- /dev/null
+++ b/zephyr/projects/nissa/nivviks_pwm_leds.dts
@@ -0,0 +1,40 @@
+/* Copyright 2022 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.
+ */
+
+/ {
+ pwmleds {
+ compatible = "pwm-leds";
+ pwm_led0: pwm_led_0 {
+ pwms = <&pwm2 2 PWM_POLARITY_INVERTED>,
+ <&pwm0 0 PWM_POLARITY_INVERTED>,
+ <&pwm1 1 PWM_POLARITY_INVERTED>;
+ };
+ };
+
+ cros-pwmleds {
+ compatible = "cros-ec,pwm-leds";
+
+ leds = <&pwm_led0>;
+ frequency = <324>;
+
+ /*<red green blue>*/
+ color-map-red = <100 0 0>;
+ color-map-green = < 0 100 0>;
+ color-map-blue = < 0 0 100>;
+ color-map-yellow = < 0 50 50>;
+ color-map-white = <100 100 100>;
+ color-map-amber = <100 20 100>;
+
+ brightness-range = <100 100 100 0 0 0>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pwm_led_0@0 {
+ reg = <0>;
+ ec-led-name = "EC_LED_ID_BATTERY_LED";
+ };
+ };
+};
diff --git a/zephyr/projects/nissa/prj.conf b/zephyr/projects/nissa/prj.conf
index 487ae8da72..20736f5fd3 100644
--- a/zephyr/projects/nissa/prj.conf
+++ b/zephyr/projects/nissa/prj.conf
@@ -66,6 +66,12 @@ CONFIG_PLATFORM_EC_PWM_KBLIGHT=y
# Column 2 is driven through the GSC, which inverts the signal going through it
CONFIG_PLATFORM_EC_KEYBOARD_COL2_INVERTED=y
+# LED
+CONFIG_PLATFORM_EC_LED_COMMON=y
+CONFIG_PLATFORM_EC_LED_PWM=y
+CONFIG_PLATFORM_EC_LED_ONOFF_STATES=y
+CONFIG_PLATFORM_EC_CONSOLE_CMD_LEDTEST=n
+
# MKBP event
CONFIG_PLATFORM_EC_MKBP_EVENT=y
CONFIG_PLATFORM_EC_MKBP_INPUT_DEVICES=y
diff --git a/zephyr/projects/nissa/src/led.c b/zephyr/projects/nissa/src/led.c
new file mode 100644
index 0000000000..fa28ccc179
--- /dev/null
+++ b/zephyr/projects/nissa/src/led.c
@@ -0,0 +1,45 @@
+/* Copyright 2022 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 control for nissa
+ */
+#include "common.h"
+#include "ec_commands.h"
+#include "led_common.h"
+#include "led_onoff_states.h"
+#include "led_pwm.h"
+
+__override const int led_charge_lvl_1 = 5;
+__override const int led_charge_lvl_2 = 97;
+__override struct led_descriptor
+ led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = {
+ [STATE_CHARGING_LVL_1] = {{EC_LED_COLOR_RED, LED_INDEFINITE} },
+ [STATE_CHARGING_LVL_2] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} },
+ [STATE_CHARGING_FULL_CHARGE] = {{EC_LED_COLOR_GREEN, LED_INDEFINITE} },
+ [STATE_DISCHARGE_S0] = {{LED_OFF, LED_INDEFINITE} },
+ [STATE_DISCHARGE_S3] = {{LED_OFF, LED_INDEFINITE} },
+ [STATE_DISCHARGE_S5] = {{LED_OFF, LED_INDEFINITE} },
+ [STATE_BATTERY_ERROR] = {{EC_LED_COLOR_RED, 1 * LED_ONE_SEC},
+ {LED_OFF, 1 * LED_ONE_SEC} },
+ [STATE_FACTORY_TEST] = {{EC_LED_COLOR_RED, 2 * LED_ONE_SEC},
+ {EC_LED_COLOR_GREEN, 2 * LED_ONE_SEC} },
+};
+
+__override void led_set_color_battery(enum ec_led_colors color)
+{
+ switch (color) {
+ case EC_LED_COLOR_RED:
+ set_pwm_led_color(EC_LED_ID_BATTERY_LED, EC_LED_COLOR_RED);
+ break;
+ case EC_LED_COLOR_GREEN:
+ set_pwm_led_color(EC_LED_ID_BATTERY_LED, EC_LED_COLOR_GREEN);
+ break;
+ case EC_LED_COLOR_AMBER:
+ set_pwm_led_color(EC_LED_ID_BATTERY_LED, EC_LED_COLOR_AMBER);
+ break;
+ default: /* LED_OFF and other unsupported colors */
+ set_pwm_led_color(EC_LED_ID_BATTERY_LED, -1);
+ break;
+ }
+}