device/mmio.h: Add more bit field helpers

For fields with single bit, it's easier to declare as

 DEFINE_BIT(name, bit)

Change-Id: If20e6b1809073b2c0dc84190edc25b207bf332b7
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35787
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Hung-Te Lin 2019-10-04 14:48:46 +08:00 committed by Werner Zeh
parent 2431a707d3
commit dafb66142e
1 changed files with 7 additions and 1 deletions

View File

@ -63,6 +63,10 @@ static inline void buffer_to_fifo32(void *buffer, size_t size, void *fifo,
* - high_bit: highest bit that's part of the bit field.
* - low_bit: lowest bit in the bit field.
*
* To define a field with a single bit:
*
* DEFINE_BIT(name, bit)
*
* To extract one field value from a raw reg value:
*
* EXTRACT_BITFIELD(value, name);
@ -85,7 +89,7 @@ static inline void buffer_to_fifo32(void *buffer, size_t size, void *fifo,
* Examples:
*
* DEFINE_BITFIELD(DISP_TYPE, 2, 1)
* DEFINE_BITFIELD(DISP_EN, 0, 0)
* DEFINE_BIT(DISP_EN, 0)
*
* SET32_BITFIELDS(&disp_regs.ctrl, DISP_TYPE, 2);
* SET32_BITFIELDS(&disp_regs.ctrl, DISP_EN, 0);
@ -118,6 +122,8 @@ static inline void buffer_to_fifo32(void *buffer, size_t size, void *fifo,
name##_BITFIELD_SIZE = (high_bit) - (low_bit) + 1, \
};
#define DEFINE_BIT(name, bit) DEFINE_BITFIELD(name, bit, bit)
#define _BF_MASK(name, value) \
(((1 << name##_BITFIELD_SIZE) - 1) << name##_BITFIELD_SHIFT)