xref: /openbmc/linux/arch/loongarch/include/asm/delay.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*559671e0SHuacai Chen /* SPDX-License-Identifier: GPL-2.0 */
2*559671e0SHuacai Chen /*
3*559671e0SHuacai Chen  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4*559671e0SHuacai Chen  */
5*559671e0SHuacai Chen #ifndef _ASM_DELAY_H
6*559671e0SHuacai Chen #define _ASM_DELAY_H
7*559671e0SHuacai Chen 
8*559671e0SHuacai Chen #include <linux/param.h>
9*559671e0SHuacai Chen 
10*559671e0SHuacai Chen extern void __delay(unsigned long cycles);
11*559671e0SHuacai Chen extern void __ndelay(unsigned long ns);
12*559671e0SHuacai Chen extern void __udelay(unsigned long us);
13*559671e0SHuacai Chen 
14*559671e0SHuacai Chen #define ndelay(ns) __ndelay(ns)
15*559671e0SHuacai Chen #define udelay(us) __udelay(us)
16*559671e0SHuacai Chen 
17*559671e0SHuacai Chen /* make sure "usecs *= ..." in udelay do not overflow. */
18*559671e0SHuacai Chen #if HZ >= 1000
19*559671e0SHuacai Chen #define MAX_UDELAY_MS	1
20*559671e0SHuacai Chen #elif HZ <= 200
21*559671e0SHuacai Chen #define MAX_UDELAY_MS	5
22*559671e0SHuacai Chen #else
23*559671e0SHuacai Chen #define MAX_UDELAY_MS	(1000 / HZ)
24*559671e0SHuacai Chen #endif
25*559671e0SHuacai Chen 
26*559671e0SHuacai Chen #endif /* _ASM_DELAY_H */
27