summaryrefslogtreecommitdiff
path: root/zephyr/shim/src/led_driver
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/shim/src/led_driver')
-rw-r--r--zephyr/shim/src/led_driver/CMakeLists.txt4
-rw-r--r--zephyr/shim/src/led_driver/led.c20
-rw-r--r--zephyr/shim/src/led_driver/led.h10
-rw-r--r--zephyr/shim/src/led_driver/led_gpio.c19
-rw-r--r--zephyr/shim/src/led_driver/led_pwm.c22
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) */