On 6/16/2014 1:37 PM, Jeroen Hofstee wrote: > On ma, 2014-06-16 at 12:52 -0700, Troy Kisky wrote: >> On 6/16/2014 12:41 PM, Jeroen Hofstee wrote: >>> Since &rgb2ycbcr_coeff and friends are declared const, but >>> assigned to a void pointer, clang will warn that the const >>> is implicity casted away. Add const to indicate the pointer >>> points to const data to get rid of these warnings. >>> >>> Cc: Stefano Babic <sba...@denx.de> >>> Signed-off-by: Jeroen Hofstee <jer...@myspectrum.nl> >>> --- >>> drivers/video/ipu_disp.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/video/ipu_disp.c b/drivers/video/ipu_disp.c >>> index cefd2dc..31b5a10 100644 >>> --- a/drivers/video/ipu_disp.c >>> +++ b/drivers/video/ipu_disp.c >>> @@ -33,7 +33,7 @@ enum csc_type_t { >>> >>> struct dp_csc_param_t { >>> int mode; >>> - void *coeff; >>> + void * const coeff; >>> }; >>> >>> #define SYNC_WAVE 0 >>> >> >> Doesn't this says the pointer is constant, not that it points to constant >> data? >> So, commit log needs updated or >> const void *coeff; > > The reason I wrongly changed it from void const * to void * const was to > circumvent gcc complaining with: > > drivers/video/ipu_disp.c: In function ‘ipu_dp_csc_setup’: > drivers/video/ipu_disp.c:393:8: warning: assignment discards ‘const’ > qualifier from pointer target type [enabled by default] > > This can be solved with: > > @@ -390,7 +390,7 @@ void ipu_dp_csc_setup(int dp, struct dp_csc_param_t > dp_csc_param, > __raw_writel(reg, DP_COM_CONF()); > } > - coeff = dp_csc_param.coeff; > + coeff = (const int (*)[5][3]) dp_csc_param.coeff; > > if (coeff) { > __raw_writel(mask_a((*coeff)[0][0]) | > > > But I am not too happy with that. Happen to know a better way? > > Regards, > Jeroen >
I don't know why it gets that warning. The following doesn't. diff --git a/drivers/video/ipu_disp.c b/drivers/video/ipu_disp.c index cefd2dc..209374f 100644 --- a/drivers/video/ipu_disp.c +++ b/drivers/video/ipu_disp.c @@ -31,9 +31,11 @@ enum csc_type_t { CSC_NUM }; +typedef int coeff_t[5][3]; + struct dp_csc_param_t { int mode; - void *coeff; + const coeff_t *coeff; }; #define SYNC_WAVE 0 @@ -381,7 +383,7 @@ void ipu_dp_csc_setup(int dp, struct dp_csc_param_t dp_csc_param, unsigned char srm_mode_update) { u32 reg; - const int (*coeff)[5][3]; + const coeff_t *coeff; if (dp_csc_param.mode >= 0) { reg = __raw_readl(DP_COM_CONF()); _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot