From 6197903bd42478987516bc4cc3f0769488a37065 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 14 Jul 2022 20:27:59 +0200 Subject: Adding upstream version 2.0. Signed-off-by: Daniel Baumann --- common.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'common.h') diff --git a/common.h b/common.h index 1c214a4..d69eb1a 100644 --- a/common.h +++ b/common.h @@ -1,15 +1,32 @@ #ifndef _COMMON_H #define _COMMON_H -#define __round_mask(x, y) ((__typeof__(x))((y)-1)) -#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1) +#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)) -#define __stringify_1(x...) #x -#define __stringify(x...) __stringify_1(x) +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