From 303a895d776acc2bf978a7dc6021eaeece897aae Mon Sep 17 00:00:00 2001 From: Thomas Heijligen Date: Tue, 29 Nov 2022 19:53:31 +0100 Subject: [PATCH] libpayload: Outsource delay function into own header For libflashrom we need the delay functions but when including the whole libpayload.h it has conflicting symbols. Change-Id: I6e4a669b8ba25836fb870d74c200985c1bfdb387 Signed-off-by: Thomas Heijligen Reviewed-on: https://review.coreboot.org/c/coreboot/+/70139 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber Reviewed-by: Julius Werner --- payloads/libpayload/include/delay.h | 59 ++++++++++++++++++++++++ payloads/libpayload/include/libpayload.h | 43 +---------------- payloads/libpayload/include/stddef.h | 7 --- 3 files changed, 60 insertions(+), 49 deletions(-) create mode 100644 payloads/libpayload/include/delay.h 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 + +#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 #include #include +#include #define BIT(x) (1ul << (x)) @@ -510,53 +511,11 @@ 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() 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