@@ -225,27 +225,56 @@ static void test_request_release_clock_spec(const struct device *clk_dev,
225225static 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