aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlias Apalodimas <ilias.apalodimas@linaro.org>2017-10-16 19:09:30 +0300
committerIlias Apalodimas <ilias.apalodimas@linaro.org>2017-10-16 19:09:30 +0300
commiteed556eede3bc2dfdfb0a0d6394709401d13a835 (patch)
tree87dddca8d6fecad2205c336c45cb3466428e59bd
parenta6ef583b28c5a6382d56c6baf4a3b5369beff007 (diff)
Added API for accessing iomem. We'll probably need barriers for that
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
-rw-r--r--include/reg_api.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/include/reg_api.h b/include/reg_api.h
new file mode 100644
index 0000000..c650533
--- /dev/null
+++ b/include/reg_api.h
@@ -0,0 +1,94 @@
+#ifndef _REG_API_H
+#define _REG_API_H
+#include <stdio.h>
+#include <stdint.h>
+
+static inline uint8_t io_read8_relaxed(const volatile void *addr)
+{
+ return *(const volatile uint8_t *)addr;
+}
+
+static inline uint16_t io_read16_relaxed(const volatile void *addr)
+{
+ return *(const volatile uint16_t *)addr;
+}
+
+static inline uint32_t io_read32_relaxed(const volatile void *addr)
+{
+ return *(const volatile uint32_t *)addr;
+}
+
+static inline uint64_t io_read64_relaxed(const volatile void *addr)
+{
+ return *(const volatile uint64_t *)addr;
+}
+
+static inline void io_write8_relaxed(uint8_t value, volatile void *addr)
+{
+ *(volatile uint8_t *)addr = value;
+}
+
+static inline void io_write16_relaxed(uint16_t value, volatile void *addr)
+{
+ *(volatile uint16_t *)addr = value;
+}
+
+static inline void io_write32_relaxed(uint32_t value, volatile void *addr)
+{
+ *(volatile uint32_t *)addr = value;
+}
+
+static inline void io_write64_relaxed(uint64_t value, volatile void *addr)
+{
+ *(volatile uint64_t *)addr = value;
+}
+
+static inline uint8_t io_read8(const volatile void *addr)
+{
+ uint8_t val;
+ val = io_read8_relaxed(addr);
+ return val;
+}
+
+static inline uint16_t io_read16(const volatile void *addr)
+{
+ uint16_t val;
+ val = io_read16_relaxed(addr);
+ return val;
+}
+
+static inline uint32_t io_read32(const volatile void *addr)
+{
+ uint32_t val;
+ val = io_read32_relaxed(addr);
+ return val;
+}
+
+static inline uint64_t io_read64(const volatile void *addr)
+{
+ uint64_t val;
+ val = io_read64_relaxed(addr);
+ return val;
+}
+
+static inline void io_write8(uint8_t value, volatile void *addr)
+{
+ io_write8_relaxed(value, addr);
+}
+
+static inline void io_write16(uint16_t value, volatile void *addr)
+{
+ io_write16_relaxed(value, addr);
+}
+
+static inline void io_write32(uint32_t value, volatile void *addr)
+{
+ io_write32_relaxed(value, addr);
+}
+
+static inline void io_write64(uint64_t value, volatile void *addr)
+{
+ io_write64_relaxed(value, addr);
+}
+
+#endif