diff options
author | Jimmy Huang <jimmy.huang@mediatek.com> | 2015-07-31 13:48:22 +0800 |
---|---|---|
committer | Yidi Lin <yidi.lin@mediatek.com> | 2015-08-05 19:55:06 +0800 |
commit | fd904df14b1ab4304bd02c00f82f0c6888f8e7a8 (patch) | |
tree | 90186570ceea689932aebb6cb090d7fddd81d356 | |
parent | c905376f966dbdcfd1c9fb9adca87172e691897e (diff) |
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>
-rw-r--r-- | include/lib/mmio.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/lib/mmio.h b/include/lib/mmio.h index cb37a1c8..19f798f4 100644 --- a/include/lib/mmio.h +++ b/include/lib/mmio.h @@ -43,6 +43,16 @@ static inline uint8_t mmio_read_8(uintptr_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) { *(volatile uint32_t*)addr = value; @@ -63,4 +73,21 @@ static inline uint64_t mmio_read_64(uintptr_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__ */ |