Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/cris/arch-v32/lib/delay.c
15125 views
1
/*
2
* Precise Delay Loops for ETRAX FS
3
*
4
* Copyright (C) 2006 Axis Communications AB.
5
*
6
*/
7
8
#include <hwregs/reg_map.h>
9
#include <hwregs/reg_rdwr.h>
10
#include <hwregs/timer_defs.h>
11
#include <linux/types.h>
12
#include <linux/delay.h>
13
#include <linux/module.h>
14
15
/*
16
* On ETRAX FS, we can check the free-running read-only 100MHz timer
17
* getting 32-bit 10ns precision, theoretically good for 42.94967295
18
* seconds. Unsigned arithmetic and careful expression handles
19
* wrapping.
20
*/
21
22
void cris_delay10ns(u32 n10ns)
23
{
24
u32 t0 = REG_RD(timer, regi_timer0, r_time);
25
while (REG_RD(timer, regi_timer0, r_time) - t0 < n10ns)
26
;
27
}
28
EXPORT_SYMBOL(cris_delay10ns);
29
30