summaryrefslogtreecommitdiff
path: root/zephyr/shim/src/pwm_led.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/shim/src/pwm_led.c')
-rw-r--r--zephyr/shim/src/pwm_led.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/zephyr/shim/src/pwm_led.c b/zephyr/shim/src/pwm_led.c
index 48565d2e56..2646f09c43 100644
--- a/zephyr/shim/src/pwm_led.c
+++ b/zephyr/shim/src/pwm_led.c
@@ -22,11 +22,17 @@ BUILD_ASSERT(DT_INST_PROP_LEN(0, leds) <= 2,
PWM_CHANNEL(DT_PWMS_CTLR_BY_IDX( \
DT_PHANDLE_BY_IDX(node_id, prop, idx), led_ch))
+#define PWM_CHANNEL_BY_IDX_COND(node_id, prop, idx, led_ch) \
+ COND_CODE_1(DT_PROP_HAS_IDX( \
+ DT_PHANDLE_BY_IDX(node_id, prop, idx), pwms, led_ch), \
+ (PWM_CHANNEL_BY_IDX(node_id, prop, idx, led_ch)), \
+ (PWM_LED_NO_CHANNEL))
+
#define PWM_LED_INIT(node_id, prop, idx) \
[PWM_LED##idx] = { \
- .ch0 = PWM_CHANNEL_BY_IDX(node_id, prop, idx, 0), \
- .ch1 = PWM_CHANNEL_BY_IDX(node_id, prop, idx, 1), \
- .ch2 = PWM_CHANNEL_BY_IDX(node_id, prop, idx, 2), \
+ .ch0 = PWM_CHANNEL_BY_IDX_COND(node_id, prop, idx, 0), \
+ .ch1 = PWM_CHANNEL_BY_IDX_COND(node_id, prop, idx, 1), \
+ .ch2 = PWM_CHANNEL_BY_IDX_COND(node_id, prop, idx, 2), \
.enable = &pwm_enable, \
.set_duty = &pwm_set_duty, \
},