xref: /aosp_15_r20/external/coreboot/src/lib/timer.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <timer.h>
4 #include <delay.h>
5 #include <thread.h>
6 
init_timer(void)7 __weak void init_timer(void) { /* do nothing */ }
8 
udelay(unsigned int usec)9 void udelay(unsigned int usec)
10 {
11 	struct stopwatch sw;
12 
13 	/*
14 	 * As the timer granularity is in microseconds pad the
15 	 * requested delay by one to get at least >= requested usec delay.
16 	 */
17 	usec += 1;
18 
19 	if (!thread_yield_microseconds(usec))
20 		return;
21 
22 	stopwatch_init_usecs_expire(&sw, usec);
23 	stopwatch_wait_until_expired(&sw);
24 }
25