video: ipu_disp: squash clang warning
PATCH 1/1 video: ipu_disp: squash clang warning
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.
--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/ipu_disp.c +1 -1
@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +void *const coeff; };#define SYNC_WAVE 0
Signature · 1 line
1.8.3.2
PATCH 1/1 video: ipu_disp: squash clang warning
Quoted 17 lines · Jeroen Hofstee
Since
&rgb2ycbcr_coeffand 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 <[email protected]>Signed-off-by Jeroen Hofstee <[email protected]>--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/video/ipu_disp.c +0
-0
drivers/video/ipu_disp.c enum csc_type_t { · line 39
Quoted 8 lines
drivers/video/ipu_disp.c +1
-1@@ -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;
Troy
PATCH 1/1 video: ipu_disp: squash clang warning
Hello Troy,
Quoted 24 lines · Troy Kisky
Quoted 23 lines · Jeroen Hofstee
Since
&rgb2ycbcr_coeffand 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 <[email protected]>Signed-off-by Jeroen Hofstee <[email protected]>--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/video/ipu_disp.c +1
-1@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +void *const coeff; };
Quoted 6 lines
drivers/video/ipu_disp.c enum csc_type_t { · line 39
Quoted 2 lines
drivers/video/ipu_disp.c +0
-0#define SYNC_WAVE 0Doesn't this says the pointer is constant, not that it points to constant data? So, commit log needs updated or
const void *coeff;
yup, it does. Thanks. The patch should be updated actually.
Regards,
Jeroen
PATCH 1/1 video: ipu_disp: squash clang warning
In reply to Troy KiskyQuoted 24 lines · Troy Kisky
Quoted 23 lines · Jeroen Hofstee
Since
&rgb2ycbcr_coeffand 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 <[email protected]>Signed-off-by Jeroen Hofstee <[email protected]>--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/video/ipu_disp.c +1
-1@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +void *const coeff; };
Quoted 6 lines
drivers/video/ipu_disp.c enum csc_type_t { · line 39
Quoted 2 lines
drivers/video/ipu_disp.c +0
-0#define SYNC_WAVE 0Doesn'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
PATCH 1/1 video: ipu_disp: squash clang warning
Quoted 52 lines · Jeroen Hofstee
Quoted 24 lines · Troy Kisky
Quoted 23 lines · Jeroen Hofstee
Since
&rgb2ycbcr_coeffand 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 <[email protected]>Signed-off-by Jeroen Hofstee <[email protected]>--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/video/ipu_disp.c +1
-1@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +void *const coeff; };Quoted 6 lines
drivers/video/ipu_disp.c enum csc_type_t { · line 39
Quoted 2 lines
drivers/video/ipu_disp.c +0
-0#define SYNC_WAVE 0Doesn'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:
(quoted diff) +1
-1@@ -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]) |
Quoted 5 lines
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.
drivers/video/ipu_disp.c +4 -2
@@ -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 ());
PATCH 1/1 video: ipu_disp: squash clang warning
In reply to Jeroen HofsteeSince rgb2ycbcr_coeff and friends are declared const, but assigned to a void pointer, clang will warn that the const is implicity casted away. If the pointer is changed to void const * gcc will warn when it is implicitly casted to a const int array. Just add a correctly typed pointer instead to prevent these casts and hence the warnings.
---
changes since v1:
Do actually fix the warning. As pointed out by Troy Kisky the patch was doing something different then the commit message said.
--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/ipu_disp.c +1 -1
@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +const int (*coeff)[5 ][3 ]; };#define SYNC_WAVE 0
Signature · 1 line
1.8.3.2
PATCH v2 1/1 ] video: ipu_disp: squash clang warning
In reply to Jeroen HofsteeSince rgb2ycbcr_coeff and friends are declared const, but assigned to a void pointer, clang will warn that the const is implicity casted away. If the pointer is changed to void const * gcc will warn when it is implicitly casted to a const int array. Just add a correctly typed pointer instead to prevent these casts and hence the warnings.
---
changes since v1:
Do actually fix the warning. As pointed out by Troy Kisky the patch was doing something different then the commit message said.
... and prefix subject with v2
--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/ipu_disp.c +1 -1
@@ -33,7 +33,7 @@ enum csc_type_t {struct dp_csc_param_t {int mode; -void *coeff; +const int (*coeff)[5 ][3 ]; };#define SYNC_WAVE 0
Signature · 1 line
1.8.3.2
PATCH v2 1/1 ] video: ipu_disp: squash clang warning
Hi,
Quoted 16 lines · On Tue, 17 Jun 2014 19:20:27 +0200 Jeroen Hofstee <[email protected]> wrote:
Since
rgb2ycbcr_coeffand friends are declared const, but assigned to a void pointer, clang will warn that the const is implicity casted away. If the pointer is changed to void const * gcc will warn when it is implicitly casted to a const int array. Just add a correctly typed pointer instead to prevent these casts and hence the warnings.Cc Troy Kisky <[email protected]>Cc Stefano Babic <[email protected]>Signed-off-by Jeroen Hofstee <[email protected]>---
changes since v1:
Do actually fix the warning. As pointed out by Troy Kisky the patch was doing something different then the commit message said.
Quoted 4 lines
... and prefix subject with v2
--- drivers/video/ipu_disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
applied to u-boot-video/master. Thanks!
Anatolij