iwlwifi: mvm: rs: organize and cleanup consts
[cascardo/linux.git] / arch / xtensa / variants / s6000 / delay.c
1 #include <asm/timex.h>
2 #include <asm/io.h>
3 #include <variant/hardware.h>
4
5 #define LOOPS 10
6 void platform_calibrate_ccount(void)
7 {
8         u32 uninitialized_var(a);
9         u32 uninitialized_var(u);
10         u32 b;
11         u32 tstamp = S6_REG_GREG1 + S6_GREG1_GLOBAL_TIMER;
12         int i = LOOPS+1;
13         do {
14                 u32 t = u;
15                 asm volatile(
16                 "1:     l32i %0, %2, 0 ;"
17                 "       beq %0, %1, 1b ;"
18                 : "=&a"(u) : "a"(t), "a"(tstamp));
19                 b = get_ccount();
20                 if (i == LOOPS)
21                         a = b;
22         } while (--i >= 0);
23         b -= a;
24         ccount_freq = b * (100000UL / LOOPS);
25 }