blob: 6511b99c5f17949824aa9ef0e4030843958f4331 [file] [log] [blame]
Arnd Bergmannaafe4db2009-05-13 22:56:33 +00001#ifndef __ASM_GENERIC_DELAY_H
2#define __ASM_GENERIC_DELAY_H
3
Jonas Bonn30ab2b02011-07-02 10:29:24 +02004/* Undefined functions to get compile-time errors */
5extern void __bad_udelay(void);
6extern void __bad_ndelay(void);
7
Arnd Bergmannaafe4db2009-05-13 22:56:33 +00008extern void __udelay(unsigned long usecs);
Jonas Bonn30ab2b02011-07-02 10:29:24 +02009extern void __ndelay(unsigned long nsecs);
10extern void __const_udelay(unsigned long xloops);
Arnd Bergmannaafe4db2009-05-13 22:56:33 +000011extern void __delay(unsigned long loops);
12
Jonas Bonn30ab2b02011-07-02 10:29:24 +020013/* 0x10c7 is 2**32 / 1000000 (rounded up) */
14#define udelay(n) (__builtin_constant_p(n) ? \
15 ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
16 __udelay(n))
17
18/* 0x5 is 2**32 / 1000000000 (rounded up) */
19#define ndelay(n) (__builtin_constant_p(n) ? \
20 ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
21 __ndelay(n))
Arnd Bergmannaafe4db2009-05-13 22:56:33 +000022
23#endif /* __ASM_GENERIC_DELAY_H */