drm/vc4: Convert register accessors to FIELD_*

The VC4_SET_FIELD and VC4_GET_FIELD are reimplementing most of the logic
already defined in FIELD_SET and FIELD_GET. Let's convert the vc4 macros to
use the FIELD_* macros.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Reviewed-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200703135713.985810-1-maxime@cerno.tech
This commit is contained in:
Maxime Ripard 2020-07-03 15:57:13 +02:00
parent 9ac2b63791
commit 46ee81521a
No known key found for this signature in database
GPG key ID: E3EF0D6F671851C5

View file

@ -6,19 +6,18 @@
#ifndef VC4_REGS_H
#define VC4_REGS_H
#include <linux/bitfield.h>
#include <linux/bitops.h>
#define VC4_MASK(high, low) ((u32)GENMASK(high, low))
/* Using the GNU statement expression extension */
#define VC4_SET_FIELD(value, field) \
({ \
uint32_t fieldval = (value) << field##_SHIFT; \
WARN_ON((fieldval & ~field##_MASK) != 0); \
fieldval & field##_MASK; \
WARN_ON(!FIELD_FIT(field##_MASK, value)); \
FIELD_PREP(field##_MASK, value); \
})
#define VC4_GET_FIELD(word, field) (((word) & field##_MASK) >> \
field##_SHIFT)
#define VC4_GET_FIELD(word, field) FIELD_GET(field##_MASK, word)
#define V3D_IDENT0 0x00000
# define V3D_EXPECTED_IDENT0 \