summaryrefslogtreecommitdiff
path: root/src/mmio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mmio.c')
-rw-r--r--src/mmio.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mmio.c b/src/mmio.c
new file mode 100644
index 0000000..e545517
--- /dev/null
+++ b/src/mmio.c
@@ -0,0 +1,23 @@
1#include <mmio.h>
2
3void* MMIO_BASE;
4
5void mmio_init(int raspi) {
6 switch (raspi) {
7 case 2:
8 case 3: MMIO_BASE = (void*)0x3F000000; break; // raspi2 & 3
9 case 4: MMIO_BASE = (void*)0xFE000000; break; // raspi4
10 default: MMIO_BASE = (void*)0x20000000; break; // raspi1, raspi zero, etc.
11 }
12}
13
14#define REG_ADDR(reg) ((volatile uint32_t*)(MMIO_BASE + reg))
15
16uint32_t mmio_read(uint32_t reg) {
17 return *REG_ADDR(reg);
18}
19
20void mmio_write(uint32_t reg, uint32_t val) {
21 *REG_ADDR(reg) = val;
22}
23