diff options
Diffstat (limited to 'zephyr/shim/src/led_driver')
-rw-r--r-- | zephyr/shim/src/led_driver/CMakeLists.txt | 4 | ||||
-rw-r--r-- | zephyr/shim/src/led_driver/led.c | 20 | ||||
-rw-r--r-- | zephyr/shim/src/led_driver/led.h | 10 | ||||
-rw-r--r-- | zephyr/shim/src/led_driver/led_gpio.c | 19 | ||||
-rw-r--r-- | zephyr/shim/src/led_driver/led_pwm.c | 22 |
5 files changed, 37 insertions, 38 deletions
diff --git a/zephyr/shim/src/led_driver/CMakeLists.txt b/zephyr/shim/src/led_driver/CMakeLists.txt index 7f513ed425..179f540fe1 100644 --- a/zephyr/shim/src/led_driver/CMakeLists.txt +++ b/zephyr/shim/src/led_driver/CMakeLists.txt @@ -3,5 +3,5 @@ # found in the LICENSE file. zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_DT led.c) -zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_DT_GPIO led_gpio.c) -zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_DT_PWM led_pwm.c) +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_DT led_gpio.c) +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_DT led_pwm.c) diff --git a/zephyr/shim/src/led_driver/led.c b/zephyr/shim/src/led_driver/led.c index 9a1c07b310..011632ac83 100644 --- a/zephyr/shim/src/led_driver/led.c +++ b/zephyr/shim/src/led_driver/led.c @@ -5,7 +5,7 @@ * Power and battery LED control. */ -#define DT_DRV_COMPAT cros_ec_led_policy +#include <zephyr/drivers/gpio.h> #include "battery.h" #include "charge_manager.h" @@ -21,12 +21,10 @@ #include "util.h" #include <zephyr/devicetree.h> -#include <zephyr/drivers/gpio.h> #include <zephyr/logging/log.h> LOG_MODULE_REGISTER(led, LOG_LEVEL_ERR); -BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, - "Exactly one instance of cros-ec,led-policy should be defined."); +#define LED_COLOR_NODE DT_PATH(led_colors) struct led_color_node_t { struct led_pins_node_t *pins_node; @@ -35,12 +33,10 @@ struct led_color_node_t { #define DECLARE_PINS_NODE(id) extern struct led_pins_node_t PINS_NODE(id); -#if CONFIG_PLATFORM_EC_LED_DT_PWM -DT_FOREACH_CHILD(DT_COMPAT_GET_ANY_STATUS_OKAY(cros_ec_pwm_led_pins), - DECLARE_PINS_NODE) -#elif CONFIG_PLATFORM_EC_LED_DT_GPIO -DT_FOREACH_CHILD(DT_COMPAT_GET_ANY_STATUS_OKAY(cros_ec_gpio_led_pins), - DECLARE_PINS_NODE) +#if DT_HAS_COMPAT_STATUS_OKAY(COMPAT_PWM_LED) +DT_FOREACH_CHILD(PWM_LED_PINS_NODE, DECLARE_PINS_NODE) +#elif DT_HAS_COMPAT_STATUS_OKAY(COMPAT_GPIO_LED) +DT_FOREACH_CHILD(GPIO_LED_PINS_NODE, DECLARE_PINS_NODE) #endif /* @@ -117,8 +113,8 @@ struct node_prop_t { LED_COLOR_INIT(3, 4, state_id), \ } }, -static const struct node_prop_t node_array[] = { DT_INST_FOREACH_CHILD( - 0, SET_LED_VALUES) }; +static const struct node_prop_t node_array[] = { DT_FOREACH_CHILD( + LED_COLOR_NODE, SET_LED_VALUES) }; test_export_static enum power_state get_chipset_state(void) { diff --git a/zephyr/shim/src/led_driver/led.h b/zephyr/shim/src/led_driver/led.h index a186d97da9..b8cedf5af7 100644 --- a/zephyr/shim/src/led_driver/led.h +++ b/zephyr/shim/src/led_driver/led.h @@ -10,6 +10,9 @@ #include <zephyr/drivers/gpio.h> #include <zephyr/drivers/pwm.h> +#define COMPAT_GPIO_LED cros_ec_gpio_led_pins +#define COMPAT_PWM_LED cros_ec_pwm_led_pins + #define PINS_NODE(id) DT_CAT(PIN_NODE_, id) #define PINS_ARRAY(id) DT_CAT(PINS_ARRAY_, id) @@ -32,6 +35,9 @@ 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, LED_RED, @@ -79,12 +85,12 @@ struct led_pins_node_t { /* Brightness Range color, only used to support ectool functionality */ enum ec_led_colors br_color; -#if CONFIG_PLATFORM_EC_LED_DT_GPIO +#if DT_HAS_COMPAT_STATUS_OKAY(COMPAT_GPIO_LED) /* Array of GPIO pins to set to enable particular color */ struct gpio_pin_t *gpio_pins; #endif -#if CONFIG_PLATFORM_EC_LED_DT_PWM +#if DT_HAS_COMPAT_STATUS_OKAY(COMPAT_PWM_LED) /* Array of PWM pins to set to enable particular color */ struct pwm_pin_t *pwm_pins; #endif diff --git a/zephyr/shim/src/led_driver/led_gpio.c b/zephyr/shim/src/led_driver/led_gpio.c index d6af1772c2..122794dc82 100644 --- a/zephyr/shim/src/led_driver/led_gpio.c +++ b/zephyr/shim/src/led_driver/led_gpio.c @@ -5,8 +5,6 @@ * GPIO LED control. */ -#define DT_DRV_COMPAT cros_ec_gpio_led_pins - #include "ec_commands.h" #include "led.h" #include "util.h" @@ -15,21 +13,20 @@ #include <zephyr/drivers/gpio.h> #include <zephyr/logging/log.h> -LOG_MODULE_REGISTER(gpio_led, LOG_LEVEL_ERR); +#if DT_HAS_COMPAT_STATUS_OKAY(COMPAT_GPIO_LED) -BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, - "Exactly one instance of cros-ec,gpio-led-pins should be defined."); +LOG_MODULE_REGISTER(gpio_led, LOG_LEVEL_ERR); #define SET_PIN(node_id, prop, i) \ { .signal = GPIO_SIGNAL(DT_PHANDLE_BY_IDX(node_id, prop, i)), \ - .val = DT_PROP_BY_IDX(node_id, led_values, i) }, + .val = DT_PHA_BY_IDX(node_id, prop, i, value) }, #define SET_GPIO_PIN(node_id) \ { DT_FOREACH_PROP_ELEM(node_id, led_pins, SET_PIN) }; #define GEN_PINS_ARRAY(id) struct gpio_pin_t PINS_ARRAY(id)[] = SET_GPIO_PIN(id) -DT_INST_FOREACH_CHILD(0, GEN_PINS_ARRAY) +DT_FOREACH_CHILD(GPIO_LED_PINS_NODE, GEN_PINS_ARRAY) #define SET_PIN_NODE(node_id) \ { .led_color = GET_PROP(node_id, led_color), \ @@ -44,14 +41,14 @@ DT_INST_FOREACH_CHILD(0, GEN_PINS_ARRAY) #define GEN_PINS_NODES(id) \ const struct led_pins_node_t PINS_NODE(id) = SET_PIN_NODE(id) -DT_INST_FOREACH_CHILD(0, GEN_PINS_NODES) +DT_FOREACH_CHILD(GPIO_LED_PINS_NODE, GEN_PINS_NODES) /* * Array of pointers to each pin node */ #define PINS_NODE_PTR(id) &PINS_NODE(id), -const struct led_pins_node_t *pins_node[] = { DT_INST_FOREACH_CHILD( - 0, PINS_NODE_PTR) }; +const struct led_pins_node_t *pins_node[] = { DT_FOREACH_CHILD( + GPIO_LED_PINS_NODE, PINS_NODE_PTR) }; /* * Set all the GPIO pins defined in the node to the defined value, @@ -141,3 +138,5 @@ const struct led_pins_node_t *led_get_node(enum led_color color, return pin_node; } #endif /* TEST_BUILD */ + +#endif /* DT_HAS_COMPAT_STATUS_OKAY(COMPAT_GPIO_LED) */ diff --git a/zephyr/shim/src/led_driver/led_pwm.c b/zephyr/shim/src/led_driver/led_pwm.c index 9fcafeea53..00002fc32e 100644 --- a/zephyr/shim/src/led_driver/led_pwm.c +++ b/zephyr/shim/src/led_driver/led_pwm.c @@ -5,8 +5,6 @@ * PWM LED control. */ -#define DT_DRV_COMPAT cros_ec_pwm_led_pins - #include "ec_commands.h" #include "led.h" #include "util.h" @@ -15,10 +13,9 @@ #include <zephyr/drivers/pwm.h> #include <zephyr/logging/log.h> -LOG_MODULE_REGISTER(pwm_led, LOG_LEVEL_ERR); +#if DT_HAS_COMPAT_STATUS_OKAY(COMPAT_PWM_LED) -BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, - "Exactly one instance of cros-ec,pwm-led-pins should be defined."); +LOG_MODULE_REGISTER(pwm_led, LOG_LEVEL_ERR); /* * Period in ns from frequency(Hz) defined in pins node @@ -36,23 +33,23 @@ BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, .pwm = PWM_DT_SPEC_GET(DT_PHANDLE_BY_IDX(node_id, prop, i)), \ .pulse_ns = DIV_ROUND_NEAREST( \ DT_PWMS_PERIOD(DT_PHANDLE_BY_IDX(node_id, prop, i)) * \ - DT_PROP_BY_IDX(node_id, led_values, i), \ + DT_PHA_BY_IDX(node_id, prop, i, value), \ 100), \ }, #define SET_PWM_PIN(node_id) \ - { DT_FOREACH_PROP_ELEM(node_id, led_pwms, SET_PIN) }; + { DT_FOREACH_PROP_ELEM(node_id, led_pins, SET_PIN) }; #define GEN_PINS_ARRAY(id) struct pwm_pin_t PINS_ARRAY(id)[] = SET_PWM_PIN(id) -DT_INST_FOREACH_CHILD(0, GEN_PINS_ARRAY) +DT_FOREACH_CHILD(PWM_LED_PINS_NODE, GEN_PINS_ARRAY) #define SET_PIN_NODE(node_id) \ { .led_color = GET_PROP(node_id, led_color), \ .led_id = GET_PROP(node_id, led_id), \ .br_color = GET_PROP_NVE(node_id, br_color), \ .pwm_pins = PINS_ARRAY(node_id), \ - .pins_count = DT_PROP_LEN(node_id, led_pwms) }; + .pins_count = DT_PROP_LEN(node_id, led_pins) }; /* * Initialize led_pins_node_t struct for each pin node defined @@ -60,14 +57,14 @@ DT_INST_FOREACH_CHILD(0, GEN_PINS_ARRAY) #define GEN_PINS_NODES(id) \ const struct led_pins_node_t PINS_NODE(id) = SET_PIN_NODE(id) -DT_INST_FOREACH_CHILD(0, GEN_PINS_NODES) +DT_FOREACH_CHILD(PWM_LED_PINS_NODE, GEN_PINS_NODES) /* * Array of pointers to each pin node */ #define PINS_NODE_PTR(id) &PINS_NODE(id), -const struct led_pins_node_t *pins_node[] = { DT_INST_FOREACH_CHILD( - 0, PINS_NODE_PTR) }; +const struct led_pins_node_t *pins_node[] = { DT_FOREACH_CHILD( + PWM_LED_PINS_NODE, PINS_NODE_PTR) }; /* * Set all the PWM channels defined in the node to the defined value, @@ -150,3 +147,4 @@ __override int led_is_supported(enum ec_led_id led_id) return ((1 << (int)led_id) & supported_leds); } +#endif /* DT_HAS_COMPAT_STATUS_OKAY(COMPAT_PWM_LED) */ |