io: add additional variations of reg access functions

Adds additional variations of register access functions:
- 64 bit register write,
- 8 bit register read,
- 8 bit register write,
- 8 bit register update.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
Tomasz Lauda 2020-05-28 11:26:13 +02:00 committed by Liam Girdwood
parent 014499c5db
commit 01819425f9
1 changed files with 21 additions and 0 deletions

View File

@ -56,12 +56,33 @@ static inline uint64_t io_reg_read_64(uint32_t reg)
(((uint64_t)io_reg_read(reg + 4)) << 32); (((uint64_t)io_reg_read(reg + 4)) << 32);
} }
static inline void io_reg_write_64(uint32_t reg, uint64_t val)
{
*((volatile uint64_t*)reg) = val;
}
static inline void io_reg_update_bits16(uint32_t reg, uint16_t mask, static inline void io_reg_update_bits16(uint32_t reg, uint16_t mask,
uint16_t value) uint16_t value)
{ {
io_reg_write16(reg, (io_reg_read16(reg) & (~mask)) | (value & mask)); io_reg_write16(reg, (io_reg_read16(reg) & (~mask)) | (value & mask));
} }
static inline uint8_t io_reg_read8(uint32_t reg)
{
return *((volatile uint8_t*)reg);
}
static inline void io_reg_write8(uint32_t reg, uint8_t val)
{
*((volatile uint8_t*)reg) = val;
}
static inline void io_reg_update_bits8(uint32_t reg, uint8_t mask,
uint8_t value)
{
io_reg_write8(reg, (io_reg_read8(reg) & (~mask)) | (value & mask));
}
#endif #endif
#endif /* __SOF_LIB_IO_H__ */ #endif /* __SOF_LIB_IO_H__ */