Linux Audio
Check our new training course
Embedded Linux Audio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
/* * Copyright (c) 2020-2021 Vestas Wind Systems A/S * * SPDX-License-Identifier: Apache-2.0 */ #ifndef __TEST_PWM_LOOPBACK_H__ #define __TEST_PWM_LOOPBACK_H__ #include <zephyr.h> #include <drivers/pwm.h> #include <ztest.h> #define PWM_LOOPBACK_OUT_IDX 0 #define PWM_LOOPBACK_IN_IDX 1 #define PWM_LOOPBACK_NODE DT_INST(0, test_pwm_loopback) #define PWM_LOOPBACK_OUT_CTLR \ DT_PWMS_CTLR_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_OUT_IDX) #define PWM_LOOPBACK_OUT_CHANNEL \ DT_PWMS_CHANNEL_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_OUT_IDX) #define PWM_LOOPBACK_OUT_FLAGS \ DT_PWMS_FLAGS_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_OUT_IDX) #define PWM_LOOPBACK_IN_CTLR \ DT_PWMS_CTLR_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_IN_IDX) #define PWM_LOOPBACK_IN_CHANNEL \ DT_PWMS_CHANNEL_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_IN_IDX) #define PWM_LOOPBACK_IN_FLAGS \ DT_PWMS_FLAGS_BY_IDX(PWM_LOOPBACK_NODE, PWM_LOOPBACK_IN_IDX) struct test_pwm { const struct device *dev; uint32_t pwm; pwm_flags_t flags; }; struct test_pwm_callback_data { uint32_t *buffer; size_t buffer_len; size_t count; int status; struct k_sem sem; bool pulse_capture; }; void get_test_pwms(struct test_pwm *out, struct test_pwm *in); void test_pulse_capture(void); void test_pulse_capture_inverted(void); void test_period_capture(void); void test_period_capture_inverted(void); void test_pulse_and_period_capture(void); void test_capture_timeout(void); void test_continuous_capture(void); void test_capture_busy(void); #endif /* __TEST_PWM_LOOPBACK_H__ */