Lines Matching refs:dev

19 static void top_handler(const struct device *dev, void *user_data);
161 typedef void (*counter_test_func_t)(const struct device *dev);
162 typedef bool (*counter_capability_func_t)(const struct device *dev);
164 static inline uint32_t get_counter_period_us(const struct device *dev) in get_counter_period_us() argument
167 if (period_devs[i] == dev) { in get_counter_period_us()
178 static void counter_setup_instance(const struct device *dev) in counter_setup_instance() argument
186 static void counter_tear_down_instance(const struct device *dev) in counter_tear_down_instance() argument
195 top_cfg.ticks = counter_get_max_top_value(dev); in counter_tear_down_instance()
196 err = counter_set_top_value(dev, &top_cfg); in counter_tear_down_instance()
200 err = counter_set_top_value(dev, &top_cfg); in counter_tear_down_instance()
204 "%s: Setting top value to default failed", dev->name); in counter_tear_down_instance()
206 err = counter_stop(dev); in counter_tear_down_instance()
207 zassert_equal(0, err, "%s: Counter failed to stop", dev->name); in counter_tear_down_instance()
236 static bool set_top_value_capable(const struct device *dev) in set_top_value_capable() argument
239 .ticks = counter_get_top_value(dev) - 1 in set_top_value_capable()
243 err = counter_set_top_value(dev, &cfg); in set_top_value_capable()
249 err = counter_set_top_value(dev, &cfg); in set_top_value_capable()
257 static void top_handler(const struct device *dev, void *user_data) in top_handler() argument
260 "%s: Unexpected callback", dev->name); in top_handler()
270 static void test_set_top_value_with_alarm_instance(const struct device *dev) in test_set_top_value_with_alarm_instance() argument
286 counter_period_us = get_counter_period_us(dev); in test_set_top_value_with_alarm_instance()
287 top_cfg.ticks = counter_us_to_ticks(dev, counter_period_us); in test_set_top_value_with_alarm_instance()
288 err = counter_start(dev); in test_set_top_value_with_alarm_instance()
289 zassert_equal(0, err, "%s: Counter failed to start", dev->name); in test_set_top_value_with_alarm_instance()
293 err = counter_get_value(dev, &cnt); in test_set_top_value_with_alarm_instance()
294 zassert_true(err == 0, "%s: Counter read failed (err: %d)", dev->name, in test_set_top_value_with_alarm_instance()
296 if (counter_is_counting_up(dev)) { in test_set_top_value_with_alarm_instance()
299 top_value = counter_get_top_value(dev); in test_set_top_value_with_alarm_instance()
302 zassert_true(err == 0, "%s: Counter should progress", dev->name); in test_set_top_value_with_alarm_instance()
304 err = counter_set_top_value(dev, &top_cfg); in test_set_top_value_with_alarm_instance()
306 dev->name, err); in test_set_top_value_with_alarm_instance()
314 dev->name, top_handler_cnt); in test_set_top_value_with_alarm_instance()
323 static void test_set_top_value_without_alarm_instance(const struct device *dev) in test_set_top_value_without_alarm_instance() argument
335 counter_period_us = get_counter_period_us(dev); in test_set_top_value_without_alarm_instance()
336 top_cfg.ticks = counter_us_to_ticks(dev, counter_period_us); in test_set_top_value_without_alarm_instance()
337 err = counter_start(dev); in test_set_top_value_without_alarm_instance()
338 zassert_equal(0, err, "%s: Counter failed to start", dev->name); in test_set_top_value_without_alarm_instance()
342 err = counter_get_value(dev, &cnt); in test_set_top_value_without_alarm_instance()
343 zassert_true(err == 0, "%s: Counter read failed (err: %d)", dev->name, in test_set_top_value_without_alarm_instance()
345 if (counter_is_counting_up(dev)) { in test_set_top_value_without_alarm_instance()
348 top_value = counter_get_top_value(dev); in test_set_top_value_without_alarm_instance()
351 zassert_true(err == 0, "%s: Counter should progress", dev->name); in test_set_top_value_without_alarm_instance()
353 err = counter_set_top_value(dev, &top_cfg); in test_set_top_value_without_alarm_instance()
355 dev->name, err); in test_set_top_value_without_alarm_instance()
357 zassert_true(counter_get_top_value(dev) == top_cfg.ticks, in test_set_top_value_without_alarm_instance()
359 dev->name); in test_set_top_value_without_alarm_instance()
368 static void alarm_handler(const struct device *dev, uint8_t chan_id, in alarm_handler() argument
381 err = counter_get_value(dev, &now); in alarm_handler()
383 dev->name, err); in alarm_handler()
385 top = counter_get_top_value(dev); in alarm_handler()
386 if (counter_is_counting_up(dev)) { in alarm_handler()
394 zassert_true(diff <= counter_us_to_ticks(dev, processing_limit_us), in alarm_handler()
402 "%s: Unexpected callback", dev->name); in alarm_handler()
410 dev->name); in alarm_handler()
414 static void test_single_shot_alarm_instance(const struct device *dev, bool set_top) in test_single_shot_alarm_instance() argument
426 counter_period_us = get_counter_period_us(dev); in test_single_shot_alarm_instance()
427 ticks = counter_us_to_ticks(dev, counter_period_us); in test_single_shot_alarm_instance()
437 if (counter_get_num_of_channels(dev) < 1U) { in test_single_shot_alarm_instance()
442 err = counter_start(dev); in test_single_shot_alarm_instance()
443 zassert_equal(0, err, "%s: Counter failed to start", dev->name); in test_single_shot_alarm_instance()
446 err = counter_set_top_value(dev, &top_cfg); in test_single_shot_alarm_instance()
449 "%s: Counter failed to set top value", dev->name); in test_single_shot_alarm_instance()
452 err = counter_set_channel_alarm(dev, 0, &cntr_alarm_cfg); in test_single_shot_alarm_instance()
455 " exceeded the limit set alarm", dev->name); in test_single_shot_alarm_instance()
460 err = counter_set_channel_alarm(dev, 0, &cntr_alarm_cfg); in test_single_shot_alarm_instance()
462 dev->name, err); in test_single_shot_alarm_instance()
464 k_busy_wait(2*(uint32_t)counter_ticks_to_us(dev, ticks)); in test_single_shot_alarm_instance()
468 zassert_equal(1, cnt, "%s: Expecting alarm callback", dev->name); in test_single_shot_alarm_instance()
470 k_busy_wait(1.5*counter_ticks_to_us(dev, ticks)); in test_single_shot_alarm_instance()
473 zassert_equal(1, cnt, "%s: Expecting alarm callback", dev->name); in test_single_shot_alarm_instance()
475 err = counter_cancel_channel_alarm(dev, 0); in test_single_shot_alarm_instance()
476 zassert_equal(0, err, "%s: Counter disabling alarm failed", dev->name); in test_single_shot_alarm_instance()
478 top_cfg.ticks = counter_get_max_top_value(dev); in test_single_shot_alarm_instance()
481 err = counter_set_top_value(dev, &top_cfg); in test_single_shot_alarm_instance()
485 err = counter_set_top_value(dev, &top_cfg); in test_single_shot_alarm_instance()
489 "%s: Setting top value to default failed", dev->name); in test_single_shot_alarm_instance()
491 err = counter_stop(dev); in test_single_shot_alarm_instance()
492 zassert_equal(0, err, "%s: Counter failed to stop", dev->name); in test_single_shot_alarm_instance()
495 void test_single_shot_alarm_notop_instance(const struct device *dev) in test_single_shot_alarm_notop_instance() argument
497 test_single_shot_alarm_instance(dev, false); in test_single_shot_alarm_notop_instance()
500 void test_single_shot_alarm_top_instance(const struct device *dev) in test_single_shot_alarm_top_instance() argument
502 test_single_shot_alarm_instance(dev, true); in test_single_shot_alarm_top_instance()
505 static bool single_channel_alarm_capable(const struct device *dev) in single_channel_alarm_capable() argument
507 return (counter_get_num_of_channels(dev) > 0); in single_channel_alarm_capable()
510 static bool single_channel_alarm_and_custom_top_capable(const struct device *dev) in single_channel_alarm_and_custom_top_capable() argument
512 return single_channel_alarm_capable(dev) && in single_channel_alarm_and_custom_top_capable()
513 set_top_value_capable(dev); in single_channel_alarm_and_custom_top_capable()
530 static void alarm_handler2(const struct device *dev, uint8_t chan_id, in alarm_handler2() argument
551 static void test_multiple_alarms_instance(const struct device *dev) in test_multiple_alarms_instance() argument
563 counter_period_us = get_counter_period_us(dev); in test_multiple_alarms_instance()
564 ticks = counter_us_to_ticks(dev, counter_period_us); in test_multiple_alarms_instance()
566 err = counter_get_value(dev, &(top_cfg.ticks)); in test_multiple_alarms_instance()
567 zassert_equal(0, err, "%s: Counter get value failed", dev->name); in test_multiple_alarms_instance()
571 cntr_alarm_cfg.ticks = counter_us_to_ticks(dev, 2000); in test_multiple_alarms_instance()
576 cntr_alarm_cfg2.ticks = counter_us_to_ticks(dev, 2000); in test_multiple_alarms_instance()
583 if (counter_get_num_of_channels(dev) < 2U) { in test_multiple_alarms_instance()
588 err = counter_start(dev); in test_multiple_alarms_instance()
589 zassert_equal(0, err, "%s: Counter failed to start", dev->name); in test_multiple_alarms_instance()
591 if (set_top_value_capable(dev)) { in test_multiple_alarms_instance()
592 err = counter_set_top_value(dev, &top_cfg); in test_multiple_alarms_instance()
593 zassert_equal(0, err, "%s: Counter failed to set top value", dev->name); in test_multiple_alarms_instance()
602 k_busy_wait(3*(uint32_t)counter_ticks_to_us(dev, cntr_alarm_cfg.ticks)); in test_multiple_alarms_instance()
604 err = counter_set_channel_alarm(dev, 0, &cntr_alarm_cfg); in test_multiple_alarms_instance()
605 zassert_equal(0, err, "%s: Counter set alarm failed", dev->name); in test_multiple_alarms_instance()
607 err = counter_set_channel_alarm(dev, 1, &cntr_alarm_cfg2); in test_multiple_alarms_instance()
608 zassert_equal(0, err, "%s: Counter set alarm failed", dev->name); in test_multiple_alarms_instance()
610 k_busy_wait(1.2 * counter_ticks_to_us(dev, ticks * 2U)); in test_multiple_alarms_instance()
616 dev->name, cnt, 2); in test_multiple_alarms_instance()
620 dev->name); in test_multiple_alarms_instance()
623 dev->name); in test_multiple_alarms_instance()
626 err = counter_cancel_channel_alarm(dev, 0); in test_multiple_alarms_instance()
627 zassert_equal(0, err, "%s: Counter disabling alarm failed", dev->name); in test_multiple_alarms_instance()
629 err = counter_cancel_channel_alarm(dev, 1); in test_multiple_alarms_instance()
630 zassert_equal(0, err, "%s: Counter disabling alarm failed", dev->name); in test_multiple_alarms_instance()
633 static bool multiple_channel_alarm_capable(const struct device *dev) in multiple_channel_alarm_capable() argument
635 return (counter_get_num_of_channels(dev) > 1); in multiple_channel_alarm_capable()
644 static void test_all_channels_instance(const struct device *dev) in test_all_channels_instance() argument
655 counter_period_us = get_counter_period_us(dev); in test_all_channels_instance()
656 ticks = counter_us_to_ticks(dev, counter_period_us); in test_all_channels_instance()
663 err = counter_start(dev); in test_all_channels_instance()
664 zassert_equal(0, err, "%s: Counter failed to start", dev->name); in test_all_channels_instance()
667 err = counter_set_channel_alarm(dev, i, &alarm_cfgs); in test_all_channels_instance()
674 "%s: Unexpected error on setting alarm", dev->name); in test_all_channels_instance()
678 k_busy_wait(1.5*counter_ticks_to_us(dev, ticks)); in test_all_channels_instance()
682 "%s: Expecting alarm callback", dev->name); in test_all_channels_instance()
685 err = counter_cancel_channel_alarm(dev, i); in test_all_channels_instance()
687 "%s: Unexpected error on disabling alarm", dev->name); in test_all_channels_instance()
691 err = counter_cancel_channel_alarm(dev, i); in test_all_channels_instance()
693 "%s: Unexpected error on disabling alarm", dev->name); in test_all_channels_instance()
703 static void test_valid_function_without_alarm(const struct device *dev) in test_valid_function_without_alarm() argument
711 uint32_t freq = counter_get_frequency(dev); in test_valid_function_without_alarm()
718 zassert_true(freq != 0, "%s: counter could not get frequency", dev->name); in test_valid_function_without_alarm()
726 ticks_expected = counter_us_to_ticks(dev, wait_for_us); in test_valid_function_without_alarm()
736 ticks_expected = counter_us_to_ticks(dev, wait_for_us); in test_valid_function_without_alarm()
743 err = counter_start(dev); in test_valid_function_without_alarm()
744 zassert_equal(0, err, "%s: counter failed to start", dev->name); in test_valid_function_without_alarm()
747 counter_get_value(dev, &tick_current); in test_valid_function_without_alarm()
748 if (counter_is_counting_up(dev)) { in test_valid_function_without_alarm()
756 err = counter_get_value(dev, &ticks); in test_valid_function_without_alarm()
758 zassert_equal(0, err, "%s: could not get counter value", dev->name); in test_valid_function_without_alarm()
761 ticks_expected + ticks_tol, "%s: counter ticks not in tolerance", dev->name); in test_valid_function_without_alarm()
766 zassert_true((ticks > 0), "%s: counter did not count", dev->name); in test_valid_function_without_alarm()
768 err = counter_stop(dev); in test_valid_function_without_alarm()
769 zassert_equal(0, err, "%s: counter failed to stop", dev->name); in test_valid_function_without_alarm()
772 static bool ms_period_capable(const struct device *dev) in ms_period_capable() argument
778 if (counter_get_frequency(dev) < 1000) { in ms_period_capable()
782 freq_khz = counter_get_frequency(dev) / 1000; in ms_period_capable()
783 max_time_ms = counter_get_top_value(dev) / freq_khz; in ms_period_capable()
801 static void test_late_alarm_instance(const struct device *dev) in test_late_alarm_instance() argument
805 uint32_t tick_us = (uint32_t)counter_ticks_to_us(dev, 1); in test_late_alarm_instance()
806 uint32_t guard = counter_us_to_ticks(dev, 200); in test_late_alarm_instance()
814 err = counter_set_guard_period(dev, guard, in test_late_alarm_instance()
816 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_late_alarm_instance()
818 err = counter_start(dev); in test_late_alarm_instance()
819 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_late_alarm_instance()
823 alarm_cfg.ticks = counter_is_counting_up(dev) ? 0 : counter_get_top_value(dev); in test_late_alarm_instance()
824 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_late_alarm_instance()
825 zassert_equal(-ETIME, err, "%s: Unexpected error (%d)", dev->name, err); in test_late_alarm_instance()
834 dev->name, 1, cnt); in test_late_alarm_instance()
836 err = counter_get_value(dev, &(alarm_cfg.ticks)); in test_late_alarm_instance()
837 zassert_true(err == 0, "%s: Counter read failed (err: %d)", dev->name, in test_late_alarm_instance()
840 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_late_alarm_instance()
842 dev->name, err); in test_late_alarm_instance()
851 dev->name, 2, cnt); in test_late_alarm_instance()
854 static void test_late_alarm_error_instance(const struct device *dev) in test_late_alarm_error_instance() argument
857 uint32_t tick_us = (uint32_t)counter_ticks_to_us(dev, 1); in test_late_alarm_error_instance()
858 uint32_t guard = counter_us_to_ticks(dev, 200); in test_late_alarm_error_instance()
865 err = counter_set_guard_period(dev, guard, in test_late_alarm_error_instance()
867 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_late_alarm_error_instance()
869 err = counter_start(dev); in test_late_alarm_error_instance()
870 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_late_alarm_error_instance()
874 alarm_cfg.ticks = counter_is_counting_up(dev) ? 0 : counter_get_top_value(dev); in test_late_alarm_error_instance()
875 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_late_alarm_error_instance()
878 dev->name, err); in test_late_alarm_error_instance()
880 err = counter_get_value(dev, &(alarm_cfg.ticks)); in test_late_alarm_error_instance()
881 zassert_true(err == 0, "%s: Counter read failed (err: %d)", dev->name, in test_late_alarm_error_instance()
884 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_late_alarm_error_instance()
887 dev->name, err); in test_late_alarm_error_instance()
890 static bool late_detection_capable(const struct device *dev) in late_detection_capable() argument
892 uint32_t guard = counter_get_guard_period(dev, in late_detection_capable()
894 int err = counter_set_guard_period(dev, guard, in late_detection_capable()
901 if (single_channel_alarm_capable(dev) == false) { in late_detection_capable()
919 static void test_short_relative_alarm_instance(const struct device *dev) in test_short_relative_alarm_instance() argument
923 uint32_t tick_us = (uint32_t)counter_ticks_to_us(dev, 1); in test_short_relative_alarm_instance()
933 err = counter_start(dev); in test_short_relative_alarm_instance()
934 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_short_relative_alarm_instance()
943 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_short_relative_alarm_instance()
946 dev->name, err); in test_short_relative_alarm_instance()
955 dev->name, i + 1, cnt); in test_short_relative_alarm_instance()
963 static bool short_relative_capable(const struct device *dev) in short_relative_capable() argument
975 if (single_channel_alarm_capable(dev) == false) { in short_relative_capable()
979 err = counter_start(dev); in short_relative_capable()
987 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in short_relative_capable()
993 k_busy_wait(counter_ticks_to_us(dev, 10)); in short_relative_capable()
1000 (void)counter_cancel_channel_alarm(dev, 0); in short_relative_capable()
1006 counter_stop(dev); in short_relative_capable()
1021 static void test_cancelled_alarm_does_not_expire_instance(const struct device *dev) in test_cancelled_alarm_does_not_expire_instance() argument
1026 uint32_t ticks = counter_us_to_ticks(dev, us); in test_cancelled_alarm_does_not_expire_instance()
1027 uint32_t top = counter_get_top_value(dev); in test_cancelled_alarm_does_not_expire_instance()
1029 us = (uint32_t)counter_ticks_to_us(dev, ticks); in test_cancelled_alarm_does_not_expire_instance()
1037 err = counter_start(dev); in test_cancelled_alarm_does_not_expire_instance()
1038 zassert_equal(0, err, "%s: Unexpected error", dev->name); in test_cancelled_alarm_does_not_expire_instance()
1042 err = counter_get_value(dev, &(alarm_cfg.ticks)); in test_cancelled_alarm_does_not_expire_instance()
1044 dev->name, err); in test_cancelled_alarm_does_not_expire_instance()
1048 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_cancelled_alarm_does_not_expire_instance()
1050 dev->name, err); in test_cancelled_alarm_does_not_expire_instance()
1052 err = counter_cancel_channel_alarm(dev, 0); in test_cancelled_alarm_does_not_expire_instance()
1054 dev->name, err); in test_cancelled_alarm_does_not_expire_instance()
1060 err = counter_set_channel_alarm(dev, 0, &alarm_cfg); in test_cancelled_alarm_does_not_expire_instance()
1062 dev->name, err); in test_cancelled_alarm_does_not_expire_instance()
1067 err = counter_cancel_channel_alarm(dev, 0); in test_cancelled_alarm_does_not_expire_instance()
1069 dev->name, err); in test_cancelled_alarm_does_not_expire_instance()
1075 dev->name, 0, cnt, i); in test_cancelled_alarm_does_not_expire_instance()
1079 static bool reliable_cancel_capable(const struct device *dev) in reliable_cancel_capable() argument
1087 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1092 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1097 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1102 if (dev == DEVICE_DT_GET(DT_NODELABEL(counter0))) { in reliable_cancel_capable()
1107 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1112 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1117 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1122 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()
1127 if (single_channel_alarm_capable(dev)) { in reliable_cancel_capable()