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