Commit 9058be43 authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds

gbefb: the pseudo_palette is only 16 elements long

The pseudo_palette is only 16 elements long.
Signed-off-by: default avatarAntonino Daplas <adaplas@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c771eba1
...@@ -86,7 +86,7 @@ static int gbe_revision; ...@@ -86,7 +86,7 @@ static int gbe_revision;
static int ypan, ywrap; static int ypan, ywrap;
static uint32_t pseudo_palette[256]; static uint32_t pseudo_palette[16];
static char *mode_option __initdata = NULL; static char *mode_option __initdata = NULL;
...@@ -854,8 +854,7 @@ static int gbefb_setcolreg(unsigned regno, unsigned red, unsigned green, ...@@ -854,8 +854,7 @@ static int gbefb_setcolreg(unsigned regno, unsigned red, unsigned green,
green >>= 8; green >>= 8;
blue >>= 8; blue >>= 8;
switch (info->var.bits_per_pixel) { if (info->var.bits_per_pixel <= 8) {
case 8:
/* wait for the color map FIFO to have a free entry */ /* wait for the color map FIFO to have a free entry */
for (i = 0; i < 1000 && gbe->cm_fifo >= 63; i++) for (i = 0; i < 1000 && gbe->cm_fifo >= 63; i++)
udelay(10); udelay(10);
...@@ -864,23 +863,25 @@ static int gbefb_setcolreg(unsigned regno, unsigned red, unsigned green, ...@@ -864,23 +863,25 @@ static int gbefb_setcolreg(unsigned regno, unsigned red, unsigned green,
return 1; return 1;
} }
gbe->cmap[regno] = (red << 24) | (green << 16) | (blue << 8); gbe->cmap[regno] = (red << 24) | (green << 16) | (blue << 8);
break; } else if (regno < 16) {
case 15: switch (info->var.bits_per_pixel) {
case 16: case 15:
red >>= 3; case 16:
green >>= 3; red >>= 3;
blue >>= 3; green >>= 3;
pseudo_palette[regno] = blue >>= 3;
(red << info->var.red.offset) | pseudo_palette[regno] =
(green << info->var.green.offset) | (red << info->var.red.offset) |
(blue << info->var.blue.offset); (green << info->var.green.offset) |
break; (blue << info->var.blue.offset);
case 32: break;
pseudo_palette[regno] = case 32:
(red << info->var.red.offset) | pseudo_palette[regno] =
(green << info->var.green.offset) | (red << info->var.red.offset) |
(blue << info->var.blue.offset); (green << info->var.green.offset) |
break; (blue << info->var.blue.offset);
break;
}
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment