summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Baltieri <fabiobaltieri@google.com>2021-10-05 19:14:32 +0000
committerCommit Bot <commit-bot@chromium.org>2021-10-06 00:04:59 +0000
commitaabb0eb2685f011fd50b41ba3df0b2b562d1fa83 (patch)
treed9d566f7f85df92f3df3459d2e18b9ddf2be907f
parent1441ad312c7bca9f301f51494df8641a597cfe47 (diff)
downloadchrome-ec-aabb0eb2685f011fd50b41ba3df0b2b562d1fa83.tar.gz
zephyr: shim: support optional pwm led channels
This changes the PWM_CHANNEL_BY_IDX macro to correctly handle pwm-leds entries with less than 3 phandles, defaulting the corresponding channels to PWM_LED_NO_CHANNEL. This is necessary for devices with only two LED channels. BRANCH=none BUG=b:200974848 TEST=build only, compared the resulting pwm_leds structure Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com> Change-Id: I719ebfb085e60cc2ef27c3508c2b73ae85d3f7ac Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3205318 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
-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, \
},