Skip to content

Commit 0d631e0

Browse files
committed
tests: drivers: nrf_clock_control: Test extended API
Add the resolve and get_startup_time call Signed-off-by: Piotr Krzyzanowski <piotr.krzyzanowski@nordicsemi.no>
1 parent f52d71c commit 0d631e0

File tree

1 file changed

+37
-8
lines changed
  • tests/drivers/clock_control/nrf_clock_control/src

1 file changed

+37
-8
lines changed

tests/drivers/clock_control/nrf_clock_control/src/main.c

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,27 +225,56 @@ static void test_request_release_clock_spec(const struct device *clk_dev,
225225
static void test_clock_control_request(const struct test_clk_context *clk_contexts,
226226
size_t contexts_size)
227227
{
228+
int ret;
228229
const struct test_clk_context *clk_context;
229230
size_t clk_specs_size;
230231
const struct device *clk_dev;
231-
const struct nrf_clock_spec *clk_spec;
232+
const struct nrf_clock_spec *req_spec;
233+
struct nrf_clock_spec res_spec;
234+
uint32_t startup_time_us;
232235

233236
for (size_t i = 0; i < contexts_size; i++) {
234237
clk_context = &clk_contexts[i];
235238
clk_specs_size = clk_context->clk_specs_size;
236239

237240
for (size_t u = 0; u < clk_specs_size; u++) {
238241
clk_dev = clk_context->clk_dev;
239-
clk_spec = &clk_context->clk_specs[u];
242+
req_spec = &clk_context->clk_specs[u];
240243

241-
zassert_true(device_is_ready(clk_dev),
242-
"%s is not ready", clk_dev->name);
244+
zassert_true(device_is_ready(clk_dev), "%s is not ready", clk_dev->name);
243245

244-
TC_PRINT("Applying clock (%s) spec: frequency %d, accuracy %d, precision "
246+
TC_PRINT("Requested clock (%s) spec: frequency %d, accuracy %d, precision "
245247
"%d\n",
246-
clk_dev->name, clk_spec->frequency, clk_spec->accuracy,
247-
clk_spec->precision);
248-
test_request_release_clock_spec(clk_dev, clk_spec);
248+
clk_dev->name, req_spec->frequency, req_spec->accuracy,
249+
req_spec->precision);
250+
251+
ret = nrf_clock_control_resolve(clk_dev, req_spec, &res_spec);
252+
zassert(ret == 0 || ret == -ENOSYS,
253+
"minimum clock specs could not be resolved");
254+
if (ret == 0) {
255+
TC_PRINT("Resolved spec: frequency %d, accuracy %d, precision "
256+
"%d\n",
257+
res_spec.frequency, res_spec.accuracy, res_spec.precision);
258+
} else if (ret == -ENOSYS) {
259+
TC_PRINT("resolve not supported\n");
260+
res_spec.frequency = req_spec->frequency;
261+
res_spec.accuracy = req_spec->accuracy;
262+
res_spec.precision = req_spec->precision;
263+
}
264+
265+
ret = nrf_clock_control_get_startup_time(clk_dev, &res_spec,
266+
&startup_time_us);
267+
zassert(ret == 0 || ret == -ENOSYS, "failed to get startup time");
268+
if (ret == 0) {
269+
TC_PRINT("startup time for resloved spec: %uus\n", startup_time_us);
270+
} else if (ret == -ENOSYS) {
271+
TC_PRINT("get startup time not supported\n");
272+
}
273+
274+
TC_PRINT("Applying spec: frequency %d, accuracy %d, precision "
275+
"%d\n",
276+
res_spec.frequency, res_spec.accuracy, res_spec.precision);
277+
test_request_release_clock_spec(clk_dev, &res_spec);
249278
}
250279
}
251280
}

0 commit comments

Comments
 (0)