Skip to contentSkip to conversation

video: ipu_disp: squash clang warning

PATCH New Jeroen Hofstee 3 participants 8 messages Jun 16, 2014 – Aug 11, 2014 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

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
index cefd2dc..31b5a10 100644
@@ -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
#1 lore raw

PATCH 1/1 video: ipu_disp: squash clang warning

Quoted 17 lines · Jeroen Hofstee

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 +0 -0
index cefd2dc..31b5a10 100644

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

#2 lore raw

PATCH 1/1 video: ipu_disp: squash clang warning

Hello Troy,

Quoted 24 lines · Troy Kisky
Quoted 23 lines · Jeroen Hofstee

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
index cefd2dc..31b5a10 100644
@@ -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 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;

yup, it does. Thanks. The patch should be updated actually.

Regards,
Jeroen

#3 lore raw

PATCH 1/1 video: ipu_disp: squash clang warning

In reply to Troy Kisky
Quoted 24 lines · Troy Kisky
Quoted 23 lines · Jeroen Hofstee

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
index cefd2dc..31b5a10 100644
@@ -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 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

#4 lore raw

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_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
index cefd2dc..31b5a10 100644
@@ -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 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:

(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
index cefd2dc..209374f 100644
@@ -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());
#5 lore raw

PATCH 1/1 video: ipu_disp: squash clang warning

In reply to Jeroen Hofstee

Since 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.

Cc Troy Kisky <[email protected]>
Cc Stefano Babic <[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.

---
 drivers/video/ipu_disp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/ipu_disp.c +1 -1
index cefd2dc..d5e857c 100644
@@ -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
#6 lore raw

PATCH v2 1/1 ] video: ipu_disp: squash clang warning

In reply to Jeroen Hofstee

Since 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.

Cc Troy Kisky <[email protected]>
Cc Stefano Babic <[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.

... 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
index cefd2dc..d5e857c 100644
@@ -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
#7 lore raw

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_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.

Cc Troy Kisky <[email protected]>
Cc Stefano Babic <[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