diff mbox

[v3,2/2] video: da8xx-fb: Fix casting of info->pseudo_palette

Message ID 1396355974-2257-2-git-send-email-jon@ringle.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jon Ringle April 1, 2014, 12:39 p.m. UTC
From: Jon Ringle <jringle@gridpoint.com>

The casting to (u16 *) on info->pseudo_palette is wrong and causes the
display to show a blue (garbage) vertical line on every other pixel column

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
 drivers/video/da8xx-fb.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

Comments

Tomi Valkeinen April 4, 2014, 10:49 a.m. UTC | #1
On 01/04/14 15:39, jon@ringle.org wrote:
> From: Jon Ringle <jringle@gridpoint.com>
> 
> The casting to (u16 *) on info->pseudo_palette is wrong and causes the
> display to show a blue (garbage) vertical line on every other pixel column
> 
> Signed-off-by: Jon Ringle <jringle@gridpoint.com>
> ---
>  drivers/video/da8xx-fb.c | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
> index 233f65f..c17f901 100644
> --- a/drivers/video/da8xx-fb.c
> +++ b/drivers/video/da8xx-fb.c
> @@ -678,15 +678,7 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
>  			(green << info->var.green.offset) |
>  			(blue << info->var.blue.offset);
>  
> -		switch (info->var.bits_per_pixel) {
> -		case 16:
> -			((u16 *) (info->pseudo_palette))[regno] = v;
> -			break;
> -		case 24:
> -		case 32:
> -			((u32 *) (info->pseudo_palette))[regno] = v;
> -			break;
> -		}
> +		((u32 *) (info->pseudo_palette))[regno] = v;
>  		if (palette[0] != 0x4000) {
>  			update_hw = 1;
>  			palette[0] = 0x4000;
> 

Thanks.

I wonder why the pseudo_palette in fb.h is 'void *' in the first place.
It seems to be cast to 'u32 *' everywhere...

 Tomi
Geert Uytterhoeven April 5, 2014, 11:35 a.m. UTC | #2
Hi Tomi,

On Fri, Apr 4, 2014 at 12:49 PM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> I wonder why the pseudo_palette in fb.h is 'void *' in the first place.
> It seems to be cast to 'u32 *' everywhere...

Historically, this was driver-specific. Many drivers stored u16 pixel values.

I guess it can be changed to u32 now, dropping all casts.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 233f65f..c17f901 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -678,15 +678,7 @@  static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
 			(green << info->var.green.offset) |
 			(blue << info->var.blue.offset);
 
-		switch (info->var.bits_per_pixel) {
-		case 16:
-			((u16 *) (info->pseudo_palette))[regno] = v;
-			break;
-		case 24:
-		case 32:
-			((u32 *) (info->pseudo_palette))[regno] = v;
-			break;
-		}
+		((u32 *) (info->pseudo_palette))[regno] = v;
 		if (palette[0] != 0x4000) {
 			update_hw = 1;
 			palette[0] = 0x4000;