diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2016-12-28 00:35:59 +0900 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-01-14 16:46:28 -0500 |
commit | 5bc516ed661af363611d4eb555cae35c0adc6fe7 (patch) | |
tree | fad1aa45bb389ee74516760a6913d0ed946145f7 /include | |
parent | 4b105f6ca96a1489ec094f10f0d1c5e95666463e (diff) | |
download | u-boot-imx-5bc516ed661af363611d4eb555cae35c0adc6fe7.zip u-boot-imx-5bc516ed661af363611d4eb555cae35c0adc6fe7.tar.gz u-boot-imx-5bc516ed661af363611d4eb555cae35c0adc6fe7.tar.bz2 |
delay: collect {m, n, u}delay declarations to include/linux/delay.h
Currently, mdelay() and udelay() are declared in include/common.h,
while ndelay() in include/linux/compat.h. It would be nice to
collect them into include/linux/delay.h like Linux.
While we are here, fix the ndelay() implementation; I used the
DIV_ROUND_UP() instead of (x)/1000 because it must wait *longer*
than the given period of time.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/common.h | 6 | ||||
-rw-r--r-- | include/linux/compat.h | 2 | ||||
-rw-r--r-- | include/linux/delay.h | 24 |
3 files changed, 25 insertions, 7 deletions
diff --git a/include/common.h b/include/common.h index ee0436b..5075fe4 100644 --- a/include/common.h +++ b/include/common.h @@ -22,6 +22,7 @@ typedef volatile unsigned char vu_char; #include <errno.h> #include <asm-offsets.h> #include <linux/bitops.h> +#include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> #include <linux/stringify.h> @@ -779,7 +780,6 @@ uint64_t get_ticks(void); void wait_ticks (unsigned long); /* arch/$(ARCH)/lib/time.c */ -void __udelay (unsigned long); ulong usec2ticks (unsigned long usec); ulong ticks2usec (unsigned long ticks); int init_timebase (void); @@ -836,10 +836,6 @@ void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); int strcmp_compar(const void *, const void *); -/* lib/time.c */ -void udelay (unsigned long); -void mdelay(unsigned long); - /* lib/uuid.c */ #include <uuid.h> diff --git a/include/linux/compat.h b/include/linux/compat.h index 533983f..a43e4d6 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -15,8 +15,6 @@ struct p_current{ extern struct p_current *current; -#define ndelay(x) udelay((x) < 1000 ? 1 : (x)/1000) - #define dev_dbg(dev, fmt, args...) \ debug(fmt, ##args) #define dev_vdbg(dev, fmt, args...) \ diff --git a/include/linux/delay.h b/include/linux/delay.h new file mode 100644 index 0000000..3dcd435 --- /dev/null +++ b/include/linux/delay.h @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _LINUX_DELAY_H +#define _LINUX_DELAY_H + +#include <linux/kernel.h> + +void __udelay(unsigned long usec); +void udelay(unsigned long usec); + +static inline void mdelay(unsigned long msec) +{ + while (msec--) + udelay(1000); +} + +static inline void ndelay(unsigned long nsec) +{ + udelay(DIV_ROUND_UP(nsec, 1000)); +} + +#endif /* defined(_LINUX_DELAY_H) */ |