summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadhurima Paruchuri <mparuchuri@google.com>2022-08-26 20:19:51 +0530
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-08-29 16:07:25 +0000
commit60d223c16c03d35901c9db3f7bf56803bec7c8c2 (patch)
treea9623925e00daee02570297e72532d1a3c036a3c
parent44cc68553ed20ca5af36ecba5444872e2c522903 (diff)
downloadchrome-ec-60d223c16c03d35901c9db3f7bf56803bec7c8c2.tar.gz
zephyr: shim: led: Add led pwm period checks
Add build asserts to make sure the led pwm period is configured right for all LEDs BUG=b:230093078 BRANCH=none TEST=zmake testall Signed-off-by: Madhurima Paruchuri <mparuchuri@google.com> Change-Id: I2fe4ee9af7c013d0f17b186baf93fc5f26fa770e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3858971 Reviewed-by: Fabio Baltieri <fabiobaltieri@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--zephyr/shim/src/pwm_led.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/zephyr/shim/src/pwm_led.c b/zephyr/shim/src/pwm_led.c
index 2c8018ffae..9e213f94b3 100644
--- a/zephyr/shim/src/pwm_led.c
+++ b/zephyr/shim/src/pwm_led.c
@@ -22,9 +22,23 @@ LOG_MODULE_REGISTER(pwm_led, LOG_LEVEL_ERR);
BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) <= 1,
"Multiple CrOS EC PWM LED instances defined");
-BUILD_ASSERT(DT_INST_PROP_LEN(0, leds) <= 2,
+
+#define PWM_LEDS_LEN DT_INST_PROP_LEN(0, leds)
+BUILD_ASSERT((PWM_LEDS_LEN > 0) && (PWM_LEDS_LEN <= 2),
"Unsupported number of LEDs defined");
+#define PWM_LED_0_0_PERIOD \
+ DT_PWMS_PERIOD_BY_IDX(DT_INST_PHANDLE_BY_IDX(0, leds, 0), 0)
+#define PWM_LED_PERIOD_BUILD_ASSERT(node_id, prop, idx, ...) \
+ BUILD_ASSERT(PWM_LED_0_0_PERIOD == \
+ DT_PWMS_PERIOD_BY_IDX(node_id, idx), \
+ "PWM LED period mismatch");
+#define PWM_LEDS_BUILD_ASSERT(node_id, prop, idx) \
+ DT_FOREACH_PROP_ELEM_VARGS(DT_PHANDLE_BY_IDX(node_id, prop, idx), \
+ pwms, PWM_LED_PERIOD_BUILD_ASSERT)
+
+DT_INST_FOREACH_PROP_ELEM(0, leds, PWM_LEDS_BUILD_ASSERT)
+
#define PWM_LED_NAME(node_id) DT_STRING_UPPER_TOKEN(node_id, ec_led_name)
#define PWM_LED_NAME_WITH_COMMA(node_id) PWM_LED_NAME(node_id),
@@ -166,6 +180,10 @@ int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
#if DT_INST_NODE_HAS_PROP(0, sidesel)
+BUILD_ASSERT((PWM_LED_0_0_PERIOD * 2) ==
+ DT_PWMS_PERIOD(DT_INST_PROP(0, sidesel)),
+ "Sidesel PWM period not properly set");
+
static const struct pwm_dt_spec _pwm_dt_spec_sidesel =
PWM_DT_SPEC_GET_BY_IDX(DT_INST_PROP(0, sidesel), 0);