19055c7d1SRyan Harkin /* 2*9fb8af33SRoberto Vargas * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. 39055c7d1SRyan Harkin * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 59055c7d1SRyan Harkin */ 69055c7d1SRyan Harkin 79055c7d1SRyan Harkin #ifndef __DELAY_TIMER_H__ 89055c7d1SRyan Harkin #define __DELAY_TIMER_H__ 99055c7d1SRyan Harkin 109055c7d1SRyan Harkin #include <stdint.h> 119055c7d1SRyan Harkin 129055c7d1SRyan Harkin /******************************************************************** 139055c7d1SRyan Harkin * A simple timer driver providing synchronous delay functionality. 149055c7d1SRyan Harkin * The driver must be initialized with a structure that provides a 159055c7d1SRyan Harkin * function pointer to return the timer value and a clock 169055c7d1SRyan Harkin * multiplier/divider. The ratio of the multiplier and the divider is 17540a5ba8SJuan Castillo * the clock period in microseconds. 189055c7d1SRyan Harkin ********************************************************************/ 199055c7d1SRyan Harkin 209055c7d1SRyan Harkin typedef struct timer_ops { 219055c7d1SRyan Harkin uint32_t (*get_timer_value)(void); 229055c7d1SRyan Harkin uint32_t clk_mult; 239055c7d1SRyan Harkin uint32_t clk_div; 249055c7d1SRyan Harkin } timer_ops_t; 259055c7d1SRyan Harkin 269055c7d1SRyan Harkin void mdelay(uint32_t msec); 279055c7d1SRyan Harkin void udelay(uint32_t usec); 28*9fb8af33SRoberto Vargas void timer_init(const timer_ops_t *ops_ptr); 299055c7d1SRyan Harkin 309055c7d1SRyan Harkin 319055c7d1SRyan Harkin #endif /* __DELAY_TIMER_H__ */ 32