diff options
Diffstat (limited to 'zephyr/shim/src/led_driver/led.h')
-rw-r--r-- | zephyr/shim/src/led_driver/led.h | 21 |
1 files changed, 17 insertions, 4 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 <devicetree.h> + #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 */ }; |