From efca01b1a4d2ba659f903f98c2abe192da59c83f Mon Sep 17 00:00:00 2001 From: Parth Malkan Date: Fri, 8 Apr 2022 17:15:26 -0700 Subject: zephyr: LED: Convert hard-coded led_color enum to use DT Generate led_color enum by using values defined in devicetree instead of using hard-coded values. BRANCH=none BUG=b:227798487 TEST=zmake build lazor, flash and test LEDs Signed-off-by: Parth Malkan Change-Id: Ib92867194c9e5aaa5e114dd08d6ce187a2f9b300 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3579991 Reviewed-by: Wai-Hong Tam --- zephyr/shim/src/led_driver/led.h | 21 +++++++++++++++++---- zephyr/shim/src/led_driver/led_gpio.c | 1 - zephyr/shim/src/led_driver/led_pwm.c | 1 - 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/zephyr/shim/src/led_driver/led.h b/zephyr/shim/src/led_driver/led.h index 53728609ed..086d2312b5 100644 --- a/zephyr/shim/src/led_driver/led.h +++ b/zephyr/shim/src/led_driver/led.h @@ -6,6 +6,8 @@ #ifndef __CROS_EC_LED_H__ #define __CROS_EC_LED_H__ +#include + #define COMPAT_GPIO_LED cros_ec_gpio_led_pins #define COMPAT_PWM_LED cros_ec_pwm_led_pins @@ -19,11 +21,22 @@ (DT_STRING_UPPER_TOKEN(id, prop)), \ (-1)) -/* TODO(b/227798487): Use DT to generate this enum instead of hardcoding */ +#define LED_ENUM(id, enum_name) DT_STRING_TOKEN(id, enum_name) +#define LED_ENUM_WITH_COMMA(id, enum_name) \ + COND_CODE_1(DT_NODE_HAS_PROP(id, enum_name), \ + (LED_ENUM(id, enum_name),), ()) + +#define GPIO_LED_PINS_NODE DT_PATH(gpio_led_pins) +#define PWM_LED_PINS_NODE DT_PATH(pwm_led_pins) + enum led_color { - LED_OFF = 0, - LED_AMBER, - LED_BLUE, +#if DT_NODE_EXISTS(GPIO_LED_PINS_NODE) + DT_FOREACH_CHILD_VARGS(GPIO_LED_PINS_NODE, + LED_ENUM_WITH_COMMA, led_color) +#elif DT_NODE_EXISTS(PWM_LED_PINS_NODE) + DT_FOREACH_CHILD_VARGS(PWM_LED_PINS_NODE, + LED_ENUM_WITH_COMMA, led_color) +#endif LED_COLOR_COUNT /* Number of colors, not a color itself */ }; diff --git a/zephyr/shim/src/led_driver/led_gpio.c b/zephyr/shim/src/led_driver/led_gpio.c index 85bdc2dd71..9107aad579 100644 --- a/zephyr/shim/src/led_driver/led_gpio.c +++ b/zephyr/shim/src/led_driver/led_gpio.c @@ -17,7 +17,6 @@ LOG_MODULE_REGISTER(gpio_led, LOG_LEVEL_ERR); -#define GPIO_LED_PINS_NODE DT_PATH(gpio_led_pins) #define LED_PIN_COUNT (LED_COLOR_COUNT - 1) /* diff --git a/zephyr/shim/src/led_driver/led_pwm.c b/zephyr/shim/src/led_driver/led_pwm.c index d2605256a5..d2466e0d60 100644 --- a/zephyr/shim/src/led_driver/led_pwm.c +++ b/zephyr/shim/src/led_driver/led_pwm.c @@ -17,7 +17,6 @@ LOG_MODULE_REGISTER(pwm_led, LOG_LEVEL_ERR); -#define PWM_LED_PINS_NODE DT_PATH(pwm_led_pins) #define LED_PIN_COUNT (LED_COLOR_COUNT - 1) /* -- cgit v1.2.1