1*93bcbb09SJames Raphael Tiovalen // SPDX-License-Identifier: GPL-2.0-only 2*93bcbb09SJames Raphael Tiovalen /* 3*93bcbb09SJames Raphael Tiovalen * Copyright (C) 2024, James Raphael Tiovalen <jamestiotio@gmail.com> 4*93bcbb09SJames Raphael Tiovalen */ 5*93bcbb09SJames Raphael Tiovalen #include <libcflat.h> 6*93bcbb09SJames Raphael Tiovalen #include <asm/barrier.h> 7*93bcbb09SJames Raphael Tiovalen #include <asm/delay.h> 8*93bcbb09SJames Raphael Tiovalen #include <asm/timer.h> 9*93bcbb09SJames Raphael Tiovalen delay(uint64_t cycles)10*93bcbb09SJames Raphael Tiovalenvoid delay(uint64_t cycles) 11*93bcbb09SJames Raphael Tiovalen { 12*93bcbb09SJames Raphael Tiovalen uint64_t start = timer_get_cycles(); 13*93bcbb09SJames Raphael Tiovalen 14*93bcbb09SJames Raphael Tiovalen while ((timer_get_cycles() - start) < cycles) 15*93bcbb09SJames Raphael Tiovalen cpu_relax(); 16*93bcbb09SJames Raphael Tiovalen } 17*93bcbb09SJames Raphael Tiovalen udelay(unsigned long usecs)18*93bcbb09SJames Raphael Tiovalenvoid udelay(unsigned long usecs) 19*93bcbb09SJames Raphael Tiovalen { 20*93bcbb09SJames Raphael Tiovalen delay(usec_to_cycles((uint64_t)usecs)); 21*93bcbb09SJames Raphael Tiovalen } 22