Browse Source

[PATCH] gbefb: IP32 gbefb depth change fix

The gbefb driver does not update the framebuffer layers visual setting when
depth is changed with fbset, resulting in strange colors (very dark blue in
16-bit, almost black in 24-bit).

Signed-off-by: Kaj-Michael Lang <milang@tal.org>
Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Antonino Daplas <adaplas@pol.net>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Kaj-Michael Lang 19 years ago
parent
commit
68b06deb2b
1 changed files with 3 additions and 0 deletions
  1. 3 0
      drivers/video/gbefb.c

+ 3 - 0
drivers/video/gbefb.c

@@ -656,12 +656,15 @@ static int gbefb_set_par(struct fb_info *info)
 	switch (bytesPerPixel) {
 	switch (bytesPerPixel) {
 	case 1:
 	case 1:
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_I8);
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_I8);
+		info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
 		break;
 		break;
 	case 2:
 	case 2:
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_ARGB5);
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_ARGB5);
+		info->fix.visual = FB_VISUAL_TRUECOLOR;
 		break;
 		break;
 	case 4:
 	case 4:
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_RGB8);
 		SET_GBE_FIELD(WID, TYP, val, GBE_CMODE_RGB8);
+		info->fix.visual = FB_VISUAL_TRUECOLOR;
 		break;
 		break;
 	}
 	}
 	SET_GBE_FIELD(WID, BUF, val, GBE_BMODE_BOTH);
 	SET_GBE_FIELD(WID, BUF, val, GBE_BMODE_BOTH);