summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-07-06 20:35:29 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-07-19 08:31:38 +0200
commit50797fb30b95b04332b9f3a35c9f7ec2a09692a1 (patch)
tree6924d02e68e3d0be870a607c0137ebb723ca2f62 /drivers
parentd2b084eb1eecc130bc4c1e7defd45467f5d2077a (diff)
media: ti-vpe: cal: Turn reg_(read|write)_field() into inline functions
Turn the reg_(read|write)_field() macros into inline functions for additional type safety. Use the FIELD_GET() and FIELD_PREP() macros internally instead of reinventing the wheel. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/ti-vpe/cal.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c
index 9b5ad48538c1..278477cf0ae9 100644
--- a/drivers/media/platform/ti-vpe/cal.c
+++ b/drivers/media/platform/ti-vpe/cal.c
@@ -6,6 +6,7 @@
* Benoit Parrot, <bparrot@ti.com>
*/
+#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
@@ -76,13 +77,6 @@ static const struct v4l2_fract
#define reg_read(dev, offset) ioread32(dev->base + offset)
#define reg_write(dev, offset, val) iowrite32(val, dev->base + offset)
-#define reg_read_field(dev, offset, mask) get_field(reg_read(dev, offset), \
- mask)
-#define reg_write_field(dev, offset, field, mask) { \
- u32 val = reg_read(dev, offset); \
- set_field(&val, field, mask); \
- reg_write(dev, offset, val); }
-
/* ------------------------------------------------------------------
* Basic structures
* ------------------------------------------------------------------
@@ -418,6 +412,21 @@ struct cal_ctx {
bool dma_act;
};
+static inline u32 reg_read_field(struct cal_dev *dev, u32 offset, u32 mask)
+{
+ return FIELD_GET(mask, reg_read(dev, offset));
+}
+
+static inline void reg_write_field(struct cal_dev *dev, u32 offset, u32 value,
+ u32 mask)
+{
+ u32 val = reg_read(dev, offset);
+
+ val &= ~mask;
+ val |= FIELD_PREP(mask, value);
+ reg_write(dev, offset, val);
+}
+
static const struct cal_fmt *find_format_by_pix(struct cal_ctx *ctx,
u32 pixelformat)
{
@@ -453,11 +462,6 @@ static inline struct cal_ctx *notifier_to_ctx(struct v4l2_async_notifier *n)
return container_of(n, struct cal_ctx, notifier);
}
-static inline int get_field(u32 value, u32 mask)
-{
- return (value & mask) >> __ffs(mask);
-}
-
static inline void set_field(u32 *valp, u32 field, u32 mask)
{
u32 val = *valp;