mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
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. Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
3fd2b3aa19
commit
1d4ed26faf
1 changed files with 5 additions and 5 deletions
|
@ -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));
|
||||
|
|
Loading…
Reference in a new issue