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

media: imx-pxp: Rewrite coeff expression

GCC5 cannot figure out that the expressions are constant, and that
triggers a build failure. Rewrite the expressions.

The following gcc5 error is workaround:

#define BM_PXP_CSC1_COEF0_YCBCR_MODE 0x80000000
^
BM_PXP_CSC1_COEF0_YCBCR_MODE |
^
#define BM_PXP_CSC1_COEF0_YCBCR_MODE 0x80000000
^

drivers/media/platform/nxp/imx-pxp.c: In function 'pxp_setup_csc':
drivers/media/platform/nxp/imx-pxp.h:582:38: error: initializer element is not constant
drivers/media/platform/nxp/imx-pxp.c:374:4: note: in expansion of macro 'BM_PXP_CSC1_COEF0_YCBCR_MODE'
drivers/media/platform/nxp/imx-pxp.h:582:38: note: (near initialization for 'csc1_coef_bt601_lim[0]')

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Ricardo Ribalda and committed by
Hans Verkuil
eefcd616 d66f9b2a

+7 -2
+7 -2
drivers/media/platform/nxp/imx-pxp.h
··· 594 594 (((v) << 18) & BM_PXP_CSC1_COEF0_C0) 595 595 #define BP_PXP_CSC1_COEF0_UV_OFFSET 9 596 596 #define BM_PXP_CSC1_COEF0_UV_OFFSET 0x0003FE00 597 + 598 + /* 599 + * We use v * (1 << 9) instead of v << 9, to workaround a gcc5 bug. 600 + * The compiler cannot understand that the expression is constant. 601 + */ 597 602 #define BF_PXP_CSC1_COEF0_UV_OFFSET(v) \ 598 - (((v) << 9) & BM_PXP_CSC1_COEF0_UV_OFFSET) 603 + (((v) * (1 << 9)) & BM_PXP_CSC1_COEF0_UV_OFFSET) 599 604 #define BP_PXP_CSC1_COEF0_Y_OFFSET 0 600 605 #define BM_PXP_CSC1_COEF0_Y_OFFSET 0x000001FF 601 606 #define BF_PXP_CSC1_COEF0_Y_OFFSET(v) \ 602 - (((v) << 0) & BM_PXP_CSC1_COEF0_Y_OFFSET) 607 + ((v) & BM_PXP_CSC1_COEF0_Y_OFFSET) 603 608 604 609 #define HW_PXP_CSC1_COEF1 (0x000001b0) 605 610