forked from Mirrors/opensbi
		
	lib: sbi: Add generic timer delay loop function
We now have frequency of the timer device provided by the platform support so we can emulate desired delay using a loop where the number loop iterations are based on timer frequency. This patch provides sbi_timer_delay_loop() for above purpose. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Xiang W <wxjstz@126.com>
This commit is contained in:
		@@ -32,6 +32,22 @@ struct sbi_timer_device {
 | 
			
		||||
 | 
			
		||||
struct sbi_scratch;
 | 
			
		||||
 | 
			
		||||
/** Generic delay loop of desired granularity */
 | 
			
		||||
void sbi_timer_delay_loop(ulong units, u64 unit_freq,
 | 
			
		||||
			  void (*delay_fn)(void *), void *opaque);
 | 
			
		||||
 | 
			
		||||
/** Provide delay in terms of milliseconds */
 | 
			
		||||
static inline void sbi_timer_mdelay(ulong msecs)
 | 
			
		||||
{
 | 
			
		||||
	sbi_timer_delay_loop(msecs, 1000, NULL, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Provide delay in terms of microseconds */
 | 
			
		||||
static inline void sbi_timer_udelay(ulong usecs)
 | 
			
		||||
{
 | 
			
		||||
	sbi_timer_delay_loop(usecs, 1000000, NULL, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Get timer value for current HART */
 | 
			
		||||
u64 sbi_timer_value(void);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user