summaryrefslogtreecommitdiff
path: root/firmware/target/arm/as3525/system-as3525.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/as3525/system-as3525.c')
-rw-r--r--firmware/target/arm/as3525/system-as3525.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c
index 940f183c63..aa98aff852 100644
--- a/firmware/target/arm/as3525/system-as3525.c
+++ b/firmware/target/arm/as3525/system-as3525.c
@@ -326,6 +326,26 @@ int system_memory_guard(int newmode)
326 return 0; 326 return 0;
327} 327}
328 328
329void udelay(unsigned short usecs)
330{
331 unsigned cycles_per_usec;
332 unsigned delay;
333
334 if (cpu_frequency == CPUFREQ_MAX) {
335 cycles_per_usec = (CPUFREQ_MAX + 999999) / 1000000;
336 } else {
337 cycles_per_usec = (CPUFREQ_NORMAL + 999999) / 1000000;
338 }
339
340 delay = (usecs * cycles_per_usec + 3) / 4;
341
342 asm volatile(
343 "1: subs %0, %0, #1 \n" /* 1 cycle */
344 " bne 1b \n" /* 3 cycles */
345 : : "r"(delay)
346 );
347}
348
329#ifndef BOOTLOADER 349#ifndef BOOTLOADER
330#ifdef HAVE_ADJUSTABLE_CPU_FREQ 350#ifdef HAVE_ADJUSTABLE_CPU_FREQ
331 351