1 /*
2 * Copyright 2023 The Hafnium Authors.
3 *
4 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
7 */
8
9 #pragma once
10
11 #include <stdint.h>
12
13 #include "hf/io.h"
14
mmio_read32(void * addr)15 static inline uint32_t mmio_read32(void *addr)
16 {
17 return io_read32(IO32_C((uintpaddr_t)addr));
18 }
19
mmio_read32_offset(void * addr,uint32_t offset)20 static inline uint32_t mmio_read32_offset(void *addr, uint32_t offset)
21 {
22 return io_read32(io32_c((uintpaddr_t)addr, offset));
23 }
24
mmio_write32(void * addr,uint32_t data)25 static inline void mmio_write32(void *addr, uint32_t data)
26 {
27 io_write32(IO32_C((uintpaddr_t)addr), data);
28 }
29
mmio_write32_offset(void * addr,uint32_t offset,uint32_t data)30 static inline void mmio_write32_offset(void *addr, uint32_t offset,
31 uint32_t data)
32 {
33 io_write32(io32_c((uintpaddr_t)addr, offset), data);
34 }
35
mmio_write64(void * addr,uint64_t data)36 static inline void mmio_write64(void *addr, uint64_t data)
37 {
38 io_write64(IO64_C((uintpaddr_t)addr), data);
39 }
40
mmio_write64_offset(void * addr,uint32_t offset,uint64_t data)41 static inline void mmio_write64_offset(void *addr, uint32_t offset,
42 uint64_t data)
43 {
44 io_write64(io64_c((uintpaddr_t)addr, offset), data);
45 }
46