diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:41:05 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:41:05 +0000 |
commit | 1cc8413aaf5f8fa6595aece1933462c096e88639 (patch) | |
tree | e97b4f25c511372d73bdd96c389c5f468d99138a /common.h | |
parent | Initial commit. (diff) | |
download | nvme-cli-1cc8413aaf5f8fa6595aece1933462c096e88639.tar.xz nvme-cli-1cc8413aaf5f8fa6595aece1933462c096e88639.zip |
Adding upstream version 2.4+really2.3.upstream/2.4+really2.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'common.h')
-rw-r--r-- | common.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/common.h b/common.h new file mode 100644 index 0000000..6a904e1 --- /dev/null +++ b/common.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef _COMMON_H +#define _COMMON_H + +#include <string.h> + +#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)) + +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 |