From f26f66d866ba1a9f3204e6fdfe2b07e67b5492ad Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 21:41:32 +0200 Subject: Adding upstream version 2.8. Signed-off-by: Daniel Baumann --- common.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 common.h (limited to 'common.h') diff --git a/common.h b/common.h new file mode 100644 index 0000000..b5594e9 --- /dev/null +++ b/common.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef _COMMON_H +#define _COMMON_H + +#include + +#include "ccan/endian/endian.h" + +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#define min(x, y) ((x) > (y) ? (y) : (x)) +#define max(x, y) ((x) > (y) ? (x) : (y)) + +#ifdef __packed +#else /* __packed */ +#define __packed __attribute__((__packed__)) +#endif /* __packed */ + +static inline uint32_t mmio_read32(void *addr) +{ + leint32_t *p = addr; + + return le32_to_cpu(*p); +} + +/* Access 64-bit registers as 2 32-bit; Some devices fail 64-bit MMIO. */ +static inline uint64_t mmio_read64(void *addr) +{ + const volatile uint32_t *p = addr; + uint32_t low, high; + + low = le32_to_cpu(*p); + high = le32_to_cpu(*(p + 1)); + + return ((uint64_t) high << 32) | low; +} + +#endif -- cgit v1.2.3