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 <src@posteo.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/70139 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
711f84d177
commit
303a895d77
|
@ -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 */
|
|
@ -68,6 +68,7 @@
|
||||||
#include <sysinfo.h>
|
#include <sysinfo.h>
|
||||||
#include <pci.h>
|
#include <pci.h>
|
||||||
#include <archive.h>
|
#include <archive.h>
|
||||||
|
#include <delay.h>
|
||||||
|
|
||||||
#define BIT(x) (1ul << (x))
|
#define BIT(x) (1ul << (x))
|
||||||
|
|
||||||
|
@ -510,53 +511,11 @@ void lib_sysinfo_get_memranges(struct memrange **ranges,
|
||||||
|
|
||||||
/* Timer functions. */
|
/* Timer functions. */
|
||||||
/* Defined by each architecture. */
|
/* Defined by each architecture. */
|
||||||
unsigned int get_cpu_speed(void);
|
|
||||||
uint64_t timer_hz(void);
|
uint64_t timer_hz(void);
|
||||||
uint64_t timer_raw_value(void);
|
uint64_t timer_raw_value(void);
|
||||||
uint64_t timer_us(uint64_t base);
|
uint64_t timer_us(uint64_t base);
|
||||||
void arch_ndelay(uint64_t n);
|
|
||||||
/* Generic. */
|
/* 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
|
* @defgroup readline Readline functions
|
||||||
* This interface provides a simple implementation of the standard readline()
|
* This interface provides a simple implementation of the standard readline()
|
||||||
|
|
|
@ -26,11 +26,4 @@ typedef __SIZE_TYPE__ size_t;
|
||||||
typedef __SIZE_TYPE__ ssize_t;
|
typedef __SIZE_TYPE__ ssize_t;
|
||||||
#undef unsigned
|
#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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue