Commit:     b1230ee50a9903a987feaad767fb71e2fd173894
Parent:     dfcffa467b4112fa6f1631c9d6bf7759c3bbe75a
Author:     Magnus Damm <[EMAIL PROTECTED]>
AuthorDate: Wed Feb 6 01:39:25 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Feb 6 10:41:16 2008 -0800

    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 
    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 
    by passing "fbcon=map:1" on the kernel cmdline.  This will assign fbcon to 
    panel (fb1) and leave the crt (fb0) unused.
    Signed-off-by: Magnus Damm <[EMAIL PROTECTED]>
    Cc: "Antonino A. Daplas" <[EMAIL PROTECTED]>
    Cc: Paul Mundt <[EMAIL PROTECTED]>
    Cc: Ben Dooks <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 drivers/video/sm501fb.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/video/sm501fb.c b/drivers/video/sm501fb.c
index e1d6085..8c39e4d 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);
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to