Commit bced0c6c authored by Antonino Daplas's avatar Antonino Daplas Committed by Linus Torvalds

[PATCH] fbdev: find correct logo for directcolor < 24bpp

Current algorithm does not choose correct logo type for directcolor < 24
bpp.  It chooses logo_224, but this is too deep for bpp < 24.  This should
fix the problem.
Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 82f912ea
...@@ -738,26 +738,35 @@ static struct logo_data { ...@@ -738,26 +738,35 @@ static struct logo_data {
int fb_prepare_logo(struct fb_info *info) int fb_prepare_logo(struct fb_info *info)
{ {
int depth = fb_get_color_depth(info);
memset(&fb_logo, 0, sizeof(struct logo_data)); memset(&fb_logo, 0, sizeof(struct logo_data));
switch (info->fix.visual) { if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
case FB_VISUAL_TRUECOLOR: depth = info->var.blue.length;
if (info->var.bits_per_pixel >= 8) if (info->var.red.length < depth)
depth = info->var.red.length;
if (info->var.green.length < depth)
depth = info->var.green.length;
}
if (depth >= 8) {
switch (info->fix.visual) {
case FB_VISUAL_TRUECOLOR:
fb_logo.needs_truepalette = 1; fb_logo.needs_truepalette = 1;
break; break;
case FB_VISUAL_DIRECTCOLOR: case FB_VISUAL_DIRECTCOLOR:
if (info->var.bits_per_pixel >= 24) {
fb_logo.needs_directpalette = 1; fb_logo.needs_directpalette = 1;
fb_logo.needs_cmapreset = 1; fb_logo.needs_cmapreset = 1;
break;
case FB_VISUAL_PSEUDOCOLOR:
fb_logo.needs_cmapreset = 1;
break;
} }
break;
case FB_VISUAL_PSEUDOCOLOR:
fb_logo.needs_cmapreset = 1;
break;
} }
/* Return if no suitable logo was found */ /* Return if no suitable logo was found */
fb_logo.logo = fb_find_logo(fb_get_color_depth(info)); fb_logo.logo = fb_find_logo(depth);
if (!fb_logo.logo || fb_logo.logo->height > info->var.yres) { if (!fb_logo.logo || fb_logo.logo->height > info->var.yres) {
fb_logo.logo = NULL; fb_logo.logo = NULL;
......
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