Browse Source

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: Jimmy Huang <jimmy.huang@mediatek.com>
pull/352/head
Jimmy Huang 9 years ago
committed by Yidi Lin
parent
commit
fd904df14b
  1. 27
      include/lib/mmio.h

27
include/lib/mmio.h

@ -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)
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__ */

Loading…
Cancel
Save