Commit fd904df1 authored by Jimmy Huang's avatar Jimmy Huang Committed by Yidi Lin
Browse files

Add mmio utility functions



- Add mmio 16 bits read/write functions.
- Add clear/set/clear-and-set utility functions.

Change-Id: I00fdbdf24af537424f8666b1cadaa5f77a2a46ed
Signed-off-by: default avatarJimmy Huang <jimmy.huang@mediatek.com>
parent c905376f
...@@ -43,6 +43,16 @@ static inline uint8_t mmio_read_8(uintptr_t addr) ...@@ -43,6 +43,16 @@ static inline uint8_t mmio_read_8(uintptr_t addr)
return *(volatile uint8_t*)addr; return *(volatile uint8_t*)addr;
} }
static inline void mmio_write_16(uintptr_t addr, uint16_t value)
{
*(volatile uint16_t*)addr = value;
}
static inline uint16_t mmio_read_16(uintptr_t addr)
{
return *(volatile uint16_t*)addr;
}
static inline void mmio_write_32(uintptr_t addr, uint32_t value) static inline void mmio_write_32(uintptr_t addr, uint32_t value)
{ {
*(volatile uint32_t*)addr = value; *(volatile uint32_t*)addr = value;
...@@ -63,4 +73,21 @@ static inline uint64_t mmio_read_64(uintptr_t addr) ...@@ -63,4 +73,21 @@ static inline uint64_t mmio_read_64(uintptr_t addr)
return *(volatile uint64_t*)addr; return *(volatile uint64_t*)addr;
} }
static inline void mmio_clrbits_32(uintptr_t addr, uint32_t clear)
{
mmio_write_32(addr, mmio_read_32(addr) & ~clear);
}
static inline void mmio_setbits_32(uintptr_t addr, uint32_t set)
{
mmio_write_32(addr, mmio_read_32(addr) | set);
}
static inline void mmio_clrsetbits_32(uintptr_t addr,
uint32_t clear,
uint32_t set)
{
mmio_write_32(addr, (mmio_read_32(addr) & ~clear) | set);
}
#endif /* __MMIO_H__ */ #endif /* __MMIO_H__ */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment