10 #include "sw/device/lib/testing/clkmgr_testutils.h"
11 #include "sw/device/lib/testing/test_framework/FreeRTOSConfig.h"
12 #include "sw/device/lib/testing/test_framework/check.h"
18 OTTF_DEFINE_TEST_CONFIG();
20 static dif_clkmgr_t clkmgr;
21 static dif_usbdev_t usbdev;
22 static dif_pinmux_t pinmux;
24 static uint32_t device_usb_count;
25 static uint32_t aon_clk_period_us;
28 static uint32_t cast_safely(uint64_t val) {
29 CHECK(val <= UINT32_MAX);
33 static inline uint32_t get_count_variability(uint32_t cycles,
34 uint32_t variability_percentage) {
35 return ((cycles * variability_percentage) + 99) / 100 + 1;
44 static uint32_t kVariabilityPercentage = 5;
51 static volatile const uint32_t kSoFPeriodUs = 1000;
53 static void enable_usb_meas_get_code(dif_clkmgr_t *clkmgr,
55 CHECK_STATUS_OK(clkmgr_testutils_enable_clock_count(
57 usb_count_info.count - usb_count_info.variability,
58 usb_count_info.count + usb_count_info.variability));
67 CHECK_DIF_OK(dif_clkmgr_init(
70 CHECK_DIF_OK(dif_usbdev_init(
73 CHECK_DIF_OK(dif_pinmux_init(
78 LOG_INFO(
"Each aon clock is %d us", aon_clk_period_us);
83 usb_count_info.count = device_usb_count - 1;
84 usb_count_info.variability =
85 get_count_variability(device_usb_count, kVariabilityPercentage);
103 LOG_INFO(
"Wait for sof to calibrate clocks");
109 enable_usb_meas_get_code(&clkmgr, &codes);
112 LOG_FATAL(
"Error code is non-zero 0x%h", codes);