From: Magnus Damm Date: Wed, 6 Feb 2008 09:39:25 +0000 (-0800) Subject: sm501fb: clear framebuffer memory and palette X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b1230ee50a9903a987feaad767fb71e2fd173894;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git sm501fb: clear framebuffer memory and palette Avoid displaying garbage on unused framebuffers. For most users a single framebuffer is used together with fbcon. sm501fb supports two framebuffers where one often is assigned to fbcon and the other one is left unused during the boot. The problem here is that framebuffers not in use by fbcon happen to display garbage. This can easily be solved by making sure that framebuffer memory and palette ram are cleared. The problem can be observed by using looking at the panel output (fb1) after booting the kernel with fbcon on crt (fb0). This is the default configuration. It's also possible to watch the garbage on the crt framebuffer by passing "fbcon=map:1" on the kernel cmdline. This will assign fbcon to the panel (fb1) and leave the crt (fb0) unused. Signed-off-by: Magnus Damm Cc: "Antonino A. Daplas" Cc: Paul Mundt Cc: Ben Dooks Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/video/sm501fb.c b/drivers/video/sm501fb.c index e1d6085bc347..8c39e4d5b08f 100644 --- a/drivers/video/sm501fb.c +++ b/drivers/video/sm501fb.c @@ -1276,6 +1276,7 @@ static int sm501fb_start(struct sm501fb_info *info, { struct resource *res; struct device *dev; + int k; int ret; info->dev = dev = &pdev->dev; @@ -1337,6 +1338,13 @@ static int sm501fb_start(struct sm501fb_info *info, info->fbmem_len = (res->end - res->start)+1; + /* clear framebuffer memory - avoids garbage data on unused fb */ + memset(info->fbmem, 0, info->fbmem_len); + + /* clear palette ram - undefined at power on */ + for (k = 0; k < (256 * 3); k++) + writel(0, info->regs + SM501_DC_PANEL_PALETTE + (k * 4)); + /* enable display controller */ sm501_unit_power(dev->parent, SM501_GATE_DISPLAY, 1);