162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci#ifndef _ASM_DELAY_H
662306a36Sopenharmony_ci#define _ASM_DELAY_H
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/param.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciextern void __delay(unsigned long cycles);
1162306a36Sopenharmony_ciextern void __ndelay(unsigned long ns);
1262306a36Sopenharmony_ciextern void __udelay(unsigned long us);
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define ndelay(ns) __ndelay(ns)
1562306a36Sopenharmony_ci#define udelay(us) __udelay(us)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/* make sure "usecs *= ..." in udelay do not overflow. */
1862306a36Sopenharmony_ci#if HZ >= 1000
1962306a36Sopenharmony_ci#define MAX_UDELAY_MS	1
2062306a36Sopenharmony_ci#elif HZ <= 200
2162306a36Sopenharmony_ci#define MAX_UDELAY_MS	5
2262306a36Sopenharmony_ci#else
2362306a36Sopenharmony_ci#define MAX_UDELAY_MS	(1000 / HZ)
2462306a36Sopenharmony_ci#endif
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#endif /* _ASM_DELAY_H */
27