summaryrefslogtreecommitdiff
path: root/src/mmio.c
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-02-08 17:50:57 -0800
committer3gg <3gg@shellblade.net>2025-02-08 17:50:57 -0800
commit1b5d7cd40eb1c1f55deedf34d3d6324498b5f000 (patch)
treea0bc21168f8270ee5fcb139498131dff884a7450 /src/mmio.c
parent0e1595330211351823e68691fca013bb47772aeb (diff)
Hello world.
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