diff options
author | 3gg <3gg@shellblade.net> | 2025-02-08 17:50:57 -0800 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2025-02-08 17:50:57 -0800 |
commit | 1b5d7cd40eb1c1f55deedf34d3d6324498b5f000 (patch) | |
tree | a0bc21168f8270ee5fcb139498131dff884a7450 /src/mmio.c | |
parent | 0e1595330211351823e68691fca013bb47772aeb (diff) |
Hello world.
Diffstat (limited to 'src/mmio.c')
-rw-r--r-- | src/mmio.c | 23 |
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 | |||
3 | void* MMIO_BASE; | ||
4 | |||
5 | void 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 | |||
16 | uint32_t mmio_read(uint32_t reg) { | ||
17 | return *REG_ADDR(reg); | ||
18 | } | ||
19 | |||
20 | void mmio_write(uint32_t reg, uint32_t val) { | ||
21 | *REG_ADDR(reg) = val; | ||
22 | } | ||
23 | |||