From d340f9224dbf9be5d597c18222073c9d328b3473 Mon Sep 17 00:00:00 2001 From: Robert Morell Date: Fri, 19 Nov 2010 18:55:51 -0800 Subject: [PATCH] video: tegra: Scale colors in pseudopalette This fixes incorrect colors drawn by clients such as fbconsole. As described by skeletonfb's fb_setcolreg: "The values supplied have a 16 bit magnitude which needs to be scaled in this function for the hardware." Tested with both r8g8b8 and r5g6b5 pixel depths and fbconsole. Change-Id: Ie3c3579502ddab8843a8a4dc7049c6efaa5d0ac1 Signed-off-by: Robert Morell Acked-by: Erik Gilling --- drivers/video/tegra/fb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/video/tegra/fb.c b/drivers/video/tegra/fb.c index 15a4f5b472a8..cc26c5977a20 100644 --- a/drivers/video/tegra/fb.c +++ b/drivers/video/tegra/fb.c @@ -198,6 +198,10 @@ static int tegra_fb_setcolreg(unsigned regno, unsigned red, unsigned green, if (regno >= 16) return -EINVAL; + red = (red >> (16 - info->var.red.length)); + green = (green >> (16 - info->var.green.length)); + blue = (blue >> (16 - info->var.blue.length)); + v = (red << var->red.offset) | (green << var->green.offset) | (blue << var->blue.offset); -- 2.34.1