Sound Open Firmware
Loading...
Searching...
No Matches
io.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright 2023 NXP
4 */
5
6#ifndef __ZEPHYR_SOF_LIB_IO_H__
7#define __ZEPHYR_SOF_LIB_IO_H__
8
9#if CONFIG_LIBRARY
10
11#define io_reg_read16(reg) 0
12#define io_reg_write16(reg, val)
13#define io_reg_update_bits16(reg, mask, value)
14#define io_reg_read(reg) 0
15#define io_reg_write(reg, val)
16#define io_reg_update_bits(reg, mask, value)
17
18#else
19
20#include <zephyr/arch/cpu.h>
21
22static inline uint8_t io_reg_read8(uint32_t reg)
23{
24 return sys_read8(reg);
25}
26
27static inline void io_reg_write8(uint32_t reg, uint8_t val)
28{
29 sys_write8(val, reg);
30}
31
32static inline void io_reg_update_bits8(uint32_t reg,
33 uint8_t mask,
34 uint8_t value)
35{
36 io_reg_write8(reg, (io_reg_read8(reg) & (~mask)) | (value & mask));
37}
38
39static inline uint16_t io_reg_read16(uint32_t reg)
40{
41 return sys_read16(reg);
42}
43
44static inline void io_reg_write16(uint32_t reg, uint16_t val)
45{
46 sys_write16(val, reg);
47}
48
49static inline void io_reg_update_bits16(uint32_t reg,
50 uint16_t mask,
51 uint16_t value)
52{
53 io_reg_write16(reg, (io_reg_read16(reg) & (~mask)) | (value & mask));
54}
55
56static inline uint32_t io_reg_read(uint32_t reg)
57{
58 return sys_read32(reg);
59}
60
61static inline void io_reg_write(uint32_t reg, uint32_t val)
62{
63 sys_write32(val, reg);
64}
65
66static inline void io_reg_update_bits(uint32_t reg,
67 uint32_t mask,
68 uint32_t value)
69{
70 io_reg_write(reg, (io_reg_read(reg) & (~mask)) | (value & mask));
71}
72
73static inline uint64_t io_reg_read64(uint32_t reg)
74{
75#if CONFIG_64BIT
76 return sys_read64(reg);
77#else
78 return (uint64_t)io_reg_read(reg) +
79 (((uint64_t)io_reg_read(reg + 4)) << 32);
80#endif /* CONFIG_64BIT */
81}
82
83#endif /* CONFIG_LIBRARY */
84
85#endif /* __ZEPHYR_SOF_LIB_IO_H__ */
static void io_reg_update_bits(uint32_t reg, uint32_t mask, uint32_t value)
Definition io.h:66
static void io_reg_write16(uint32_t reg, uint16_t val)
Definition io.h:44
static uint32_t io_reg_read(uint32_t reg)
Definition io.h:56
static void io_reg_write8(uint32_t reg, uint8_t val)
Definition io.h:27
static void io_reg_write(uint32_t reg, uint32_t val)
Definition io.h:61
static uint8_t io_reg_read8(uint32_t reg)
Definition io.h:22
static uint16_t io_reg_read16(uint32_t reg)
Definition io.h:39
static uint64_t io_reg_read64(uint32_t reg)
Definition io.h:73
static void io_reg_update_bits16(uint32_t reg, uint16_t mask, uint16_t value)
Definition io.h:49
static void io_reg_update_bits8(uint32_t reg, uint8_t mask, uint8_t value)
Definition io.h:32
char value[]
Definition tlv.h:2