video: cfb_console: fix 32-bit display on 64-bit architectures
PATCH 1/1 video: cfb_console: fix 32-bit display on 64-bit architectures
"unsigned long" is a lousy data type when it comes to match peripheral hardware registers with a fixed size.
Just do the obvious and match a 32-bit display format with an "u32" data type for casting.
This fixes the logo display on 64-bit architectures, which produced a black line on the right side of the logo with non-black backgrounds.
--- drivers/video/cfb_console.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/video/cfb_console.c +5 -5
@@ -1079,8 +1079,8 @@ __weak void video_set_lut(unsigned int index, unsigned char r, }#define FILL_32BIT_X888RGB (r,g,b) { \ - *(unsigned long *)fb = \ - SWAP32((unsigned long)(((r<<16) | \ + *(u32 *)fb = \ + SWAP32((unsigned int)(((r<<16) | \ (g<<8) | \ b))); \ fb += 4; \
@@ -1161,7 +1161,7 @@ static void draw_bitmap(uchar **fb, uchar *bm, struct palette *p,break ;case GDF_32BIT_X888RGB :for (i =0 ; i < cnt; i++) { - *(unsigned long *) addr = p[bm[*off]].ce.dw; + *(u32 *) addr = p[bm[*off]].ce.dw; addr +=4 ; }break ;
@@ -1825,8 +1825,8 @@ static void plot_logo_or_black(void *screen, int x, int y, int black) (b >> 3)));break ;case GDF_32BIT_X888RGB : - *(unsigned long *) dest = -SWAP32 ((unsigned long ) ( + *(u32 *) dest = +SWAP32 ((u32) ( (r <<16 ) | (g <<8 ) | b));
Signature · 1 line
2.8.2
PATCH 1/1 video: cfb_console: fix 32-bit display on 64-bit architectures
Quoted 11 lines · On Mon, 6 Mar 2017 01:13:38 +0000 Andre Przywara andre.przywara at arm.com…
"unsigned long" is a lousy data type when it comes to match peripheral hardware registers with a fixed size.
Just do the obvious and match a 32-bit display format with an "u32" data type for casting.
This fixes the logo display on 64-bit architectures, which produced a black line on the right side of the logo with non-black backgrounds.Signed-off-by Andre Przywara <[email protected]>--- drivers/video/cfb_console.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
applied to u-boot-video/master. Thanks!
--
Anatolij