aboutsummaryrefslogtreecommitdiffstats
path: root/boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-07-15 12:41:40 +1000
committerinmarket <andrewh@inmarket.com.au>2014-07-15 12:41:40 +1000
commit0e74c164c3eac14f6e99d1a5cc4e0563faeff5d0 (patch)
treead1e2e9942db826dfaaf681c8a0cef48a87eabf2 /boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h
parent92d972cfd83b67961dc63d60c5317ec2651eb256 (diff)
parentdb4719bd1d3cef2597f1bf443f8d82a27f233eae (diff)
downloaduGFX-0e74c164c3eac14f6e99d1a5cc4e0563faeff5d0.tar.gz
uGFX-0e74c164c3eac14f6e99d1a5cc4e0563faeff5d0.tar.bz2
uGFX-0e74c164c3eac14f6e99d1a5cc4e0563faeff5d0.zip
Merge branch 'master' into newmouse
Diffstat (limited to 'boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h')
-rw-r--r--boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h b/boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h
new file mode 100644
index 00000000..89bea700
--- /dev/null
+++ b/boards/base/RaspberryPi/example-FreeRTOS/Drivers/mmio.h
@@ -0,0 +1,24 @@
+/* mmio.h - access to MMIO registers */
+
+#ifndef MMIO_H
+#define MMIO_H
+
+#include <stdint.h>
+
+// write to MMIO register
+static inline void mmio_write(uint32_t reg, uint32_t data) {
+ uint32_t *ptr = (uint32_t*)reg;
+ asm volatile("str %[data], [%[reg]]"
+ : : [reg]"r"(ptr), [data]"r"(data));
+}
+
+// read from MMIO register
+static inline uint32_t mmio_read(uint32_t reg) {
+ uint32_t *ptr = (uint32_t*)reg;
+ uint32_t data;
+ asm volatile("ldr %[data], [%[reg]]"
+ : [data]"=r"(data) : [reg]"r"(ptr));
+ return data;
+}
+
+#endif // #ifndef MMIO_H