From: Robert Morell Date: Sat, 20 Nov 2010 02:55:51 +0000 (-0800) Subject: video: tegra: Scale colors in pseudopalette X-Git-Tag: firefly_0821_release~9833^2~103^2~5 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d340f9224dbf9be5d597c18222073c9d328b3473;p=firefly-linux-kernel-4.4.55.git 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 --- 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);