Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: ti-vpe: cal: Fix compilation on 32-bit ARM

When compiled on 32-bit ARM, the CAL driver fails with the FIELD_PREP()
macro complaining that the mask is not constant. While all callers of
the inline cal_write_field() function pass a constant mask, the mask
parameter itself is a variable, which likely doesn't please the
compiler.

Fix it by replacing FIELD_PREP() with a manual implementation.

Fixes: 50797fb30b95 ("media: ti-vpe: cal: Turn reg_(read|write)_field() into inline functions")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reported-by: Sakari Ailus <sakari.ailus@linux.intel.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>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
bec2ddfd d012a719

+1 -1
+1 -1
drivers/media/platform/ti-vpe/cal.h
··· 226 226 u32 val = cal_read(cal, offset); 227 227 228 228 val &= ~mask; 229 - val |= FIELD_PREP(mask, value); 229 + val |= (value << __ffs(mask)) & mask; 230 230 cal_write(cal, offset, val); 231 231 } 232 232