diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-01-25 11:31:38 -0500 |
---|---|---|
committer | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-02-08 05:06:35 -0500 |
commit | 48c87a4483d9146d9f23198163d6ee621535702d (patch) | |
tree | 1499bd32160b41a5524ee8b44adf41df35fa37ba /arch/cris/arch-v32 | |
parent | a474de0a02ee9093af96414a30f69d433201d002 (diff) |
CRIS v32: Add precise delay loops for ETRAX FS and ARTPEC-3.
Implements cris_delay10ns.
Diffstat (limited to 'arch/cris/arch-v32')
-rw-r--r-- | arch/cris/arch-v32/lib/delay.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/cris/arch-v32/lib/delay.c b/arch/cris/arch-v32/lib/delay.c new file mode 100644 index 000000000000..39f1ac9995b4 --- /dev/null +++ b/arch/cris/arch-v32/lib/delay.c | |||
@@ -0,0 +1,28 @@ | |||
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); | ||