summaryrefslogtreecommitdiff
path: root/zephyr/shim/src
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/shim/src')
-rw-r--r--zephyr/shim/src/led_driver/led.h21
-rw-r--r--zephyr/shim/src/led_driver/led_gpio.c1
-rw-r--r--zephyr/shim/src/led_driver/led_pwm.c1
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 <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 */
};
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)
/*