diff options
Diffstat (limited to 'zephyr/projects/nissa')
-rw-r--r-- | zephyr/projects/nissa/BUILD.py | 2 | ||||
-rw-r--r-- | zephyr/projects/nissa/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/projects/nissa/nereid_pwm_leds.dts | 40 | ||||
-rw-r--r-- | zephyr/projects/nissa/nivviks_pwm_leds.dts | 40 | ||||
-rw-r--r-- | zephyr/projects/nissa/prj.conf | 6 | ||||
-rw-r--r-- | zephyr/projects/nissa/src/led.c | 45 |
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; + } +} |