diff options
-rw-r--r-- | payloads/libpayload/include/delay.h | 59 | ||||
-rw-r--r-- | payloads/libpayload/include/libpayload.h | 43 | ||||
-rw-r--r-- | payloads/libpayload/include/stddef.h | 7 |
3 files changed, 60 insertions, 49 deletions
diff --git a/payloads/libpayload/include/delay.h b/payloads/libpayload/include/delay.h new file mode 100644 index 0000000000..126bee66f8 --- /dev/null +++ b/payloads/libpayload/include/delay.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#ifndef LIBPAYLOAD_DELAY_H +#define LIBPAYLOAD_DELAY_H + +#include <stdint.h> + +#define NSECS_PER_SEC 1000000000 +#define USECS_PER_SEC 1000000 +#define MSECS_PER_SEC 1000 +#define NSECS_PER_MSEC (NSECS_PER_SEC / MSECS_PER_SEC) +#define NSECS_PER_USEC (NSECS_PER_SEC / USECS_PER_SEC) +#define USECS_PER_MSEC (USECS_PER_SEC / MSECS_PER_SEC) + +unsigned int get_cpu_speed(void); + +void arch_ndelay(uint64_t n); + +/** + * Delay for a specified number of nanoseconds. + * + * @param ns Number of nanoseconds to delay for. + */ +static inline void ndelay(unsigned int ns) +{ + arch_ndelay((uint64_t)ns); +} + +/** + * Delay for a specified number of microseconds. + * + * @param us Number of microseconds to delay for. + */ +static inline void udelay(unsigned int us) +{ + arch_ndelay((uint64_t)us * NSECS_PER_USEC); +} + +/** + * Delay for a specified number of milliseconds. + * + * @param ms Number of milliseconds to delay for. + */ +static inline void mdelay(unsigned int ms) +{ + arch_ndelay((uint64_t)ms * NSECS_PER_MSEC); +} + +/** + * Delay for a specified number of seconds. + * + * @param s Number of seconds to delay for. + */ +static inline void delay(unsigned int s) +{ + arch_ndelay((uint64_t)s * NSECS_PER_SEC); +} + +#endif /* LIBPAYLOAD_DELAY_H */ diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 15871181c1..19ba671a5a 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -68,6 +68,7 @@ #include <sysinfo.h> #include <pci.h> #include <archive.h> +#include <delay.h> #define BIT(x) (1ul << (x)) @@ -510,54 +511,12 @@ void lib_sysinfo_get_memranges(struct memrange **ranges, /* Timer functions. */ /* Defined by each architecture. */ -unsigned int get_cpu_speed(void); uint64_t timer_hz(void); uint64_t timer_raw_value(void); uint64_t timer_us(uint64_t base); -void arch_ndelay(uint64_t n); /* Generic. */ /** - * Delay for a specified number of nanoseconds. - * - * @param ns Number of nanoseconds to delay for. - */ -static inline void ndelay(unsigned int ns) -{ - arch_ndelay((uint64_t)ns); -} - -/** - * Delay for a specified number of microseconds. - * - * @param us Number of microseconds to delay for. - */ -static inline void udelay(unsigned int us) -{ - arch_ndelay((uint64_t)us * NSECS_PER_USEC); -} - -/** - * Delay for a specified number of milliseconds. - * - * @param ms Number of milliseconds to delay for. - */ -static inline void mdelay(unsigned int ms) -{ - arch_ndelay((uint64_t)ms * NSECS_PER_MSEC); -} - -/** - * Delay for a specified number of seconds. - * - * @param s Number of seconds to delay for. - */ -static inline void delay(unsigned int s) -{ - arch_ndelay((uint64_t)s * NSECS_PER_SEC); -} - -/** * @defgroup readline Readline functions * This interface provides a simple implementation of the standard readline() * and getline() functions. They read a line of input from the console. diff --git a/payloads/libpayload/include/stddef.h b/payloads/libpayload/include/stddef.h index 9003ac9550..81aaa17cb8 100644 --- a/payloads/libpayload/include/stddef.h +++ b/payloads/libpayload/include/stddef.h @@ -26,11 +26,4 @@ typedef __SIZE_TYPE__ size_t; typedef __SIZE_TYPE__ ssize_t; #undef unsigned -#define NSECS_PER_SEC 1000000000 -#define USECS_PER_SEC 1000000 -#define MSECS_PER_SEC 1000 -#define NSECS_PER_MSEC (NSECS_PER_SEC / MSECS_PER_SEC) -#define NSECS_PER_USEC (NSECS_PER_SEC / USECS_PER_SEC) -#define USECS_PER_MSEC (USECS_PER_SEC / MSECS_PER_SEC) - #endif |