blob: 7f9ab5d500270c75c7ba4409eb341e93eb8b88c7 [file] [log] [blame]
Madhukar Pappireddyf9bc7ce2023-01-06 15:19:22 -06001/*
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
15static inline uint32_t mmio_read32(void *addr)
16{
17 return io_read32(IO32_C((uintpaddr_t)addr));
18}
19
20static inline uint32_t mmio_read32_offset(void *addr, uint32_t offset)
21{
22 return io_read32(io32_c((uintpaddr_t)addr, offset));
23}
24
Madhukar Pappireddy92b404e2024-07-19 13:42:19 -050025static inline uint64_t mmio_read64(void *addr)
26{
27 return io_read64(IO64_C((uintpaddr_t)addr));
28}
29
30static inline uint64_t mmio_read64_offset(void *addr, uint32_t offset)
31{
32 return io_read64(io64_c((uintpaddr_t)addr, offset));
33}
34
Madhukar Pappireddyf9bc7ce2023-01-06 15:19:22 -060035static inline void mmio_write32(void *addr, uint32_t data)
36{
37 io_write32(IO32_C((uintpaddr_t)addr), data);
38}
39
40static inline void mmio_write32_offset(void *addr, uint32_t offset,
41 uint32_t data)
42{
43 io_write32(io32_c((uintpaddr_t)addr, offset), data);
44}
45
46static inline void mmio_write64(void *addr, uint64_t data)
47{
48 io_write64(IO64_C((uintpaddr_t)addr), data);
49}
50
51static inline void mmio_write64_offset(void *addr, uint32_t offset,
52 uint64_t data)
53{
54 io_write64(io64_c((uintpaddr_t)addr, offset), data);
55}