/* * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved. * Copyright (c) 2019, Linaro Limited * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef DELAY_TIMER_H #define DELAY_TIMER_H #include #include #include /******************************************************************** * A simple timer driver providing synchronous delay functionality. * The driver must be initialized with a structure that provides a * function pointer to return the timer value and a clock * multiplier/divider. The ratio of the multiplier and the divider is * the clock period in microseconds. ********************************************************************/ typedef struct timer_ops { uint32_t (*get_timer_value)(void); uint32_t clk_mult; uint32_t clk_div; uint64_t (*timeout_init_us)(uint32_t usec); bool (*timeout_elapsed)(uint64_t cnt); } timer_ops_t; uint64_t timeout_init_us(uint32_t usec); bool timeout_elapsed(uint64_t cnt); void mdelay(uint32_t msec); void udelay(uint32_t usec); void timer_init(const timer_ops_t *ops_ptr); #endif /* DELAY_TIMER_H */