123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #ifndef ZEPHYR_INCLUDE_TIMING_TIMING_H_
- #define ZEPHYR_INCLUDE_TIMING_TIMING_H_
- #include <sys/arch_interface.h>
- #include <timing/types.h>
- void soc_timing_init(void);
- void soc_timing_start(void);
- void soc_timing_stop(void);
- timing_t soc_timing_counter_get(void);
- uint64_t soc_timing_cycles_get(volatile timing_t *const start,
- volatile timing_t *const end);
- uint64_t soc_timing_freq_get(void);
- uint64_t soc_timing_cycles_to_ns(uint64_t cycles);
- uint64_t soc_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count);
- uint32_t soc_timing_freq_get_mhz(void);
- void board_timing_init(void);
- void board_timing_start(void);
- void board_timing_stop(void);
- timing_t board_timing_counter_get(void);
- uint64_t board_timing_cycles_get(volatile timing_t *const start,
- volatile timing_t *const end);
- uint64_t board_timing_freq_get(void);
- uint64_t board_timing_cycles_to_ns(uint64_t cycles);
- uint64_t board_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count);
- uint32_t board_timing_freq_get_mhz(void);
- #ifdef CONFIG_TIMING_FUNCTIONS
- void timing_init(void);
- void timing_start(void);
- void timing_stop(void);
- static inline timing_t timing_counter_get(void)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_counter_get();
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_counter_get();
- #else
- return arch_timing_counter_get();
- #endif
- }
- static inline uint64_t timing_cycles_get(volatile timing_t *const start,
- volatile timing_t *const end)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_cycles_get(start, end);
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_cycles_get(start, end);
- #else
- return arch_timing_cycles_get(start, end);
- #endif
- }
- static inline uint64_t timing_freq_get(void)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_freq_get();
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_freq_get();
- #else
- return arch_timing_freq_get();
- #endif
- }
- static inline uint64_t timing_cycles_to_ns(uint64_t cycles)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_cycles_to_ns(cycles);
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_cycles_to_ns(cycles);
- #else
- return arch_timing_cycles_to_ns(cycles);
- #endif
- }
- static inline uint64_t timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_cycles_to_ns_avg(cycles, count);
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_cycles_to_ns_avg(cycles, count);
- #else
- return arch_timing_cycles_to_ns_avg(cycles, count);
- #endif
- }
- static inline uint32_t timing_freq_get_mhz(void)
- {
- #if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
- return board_timing_freq_get_mhz();
- #elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
- return soc_timing_freq_get_mhz();
- #else
- return arch_timing_freq_get_mhz();
- #endif
- }
- #endif
- #endif
|