]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
viafb: use proper register for colour when doing fill ops
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Wed, 22 Sep 2010 02:33:52 +0000 (02:33 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 9 Dec 2010 21:26:45 +0000 (13:26 -0800)
commit efd4f6398dc92b5bf392670df862f42a19f34cf2 upstream.

The colour was written to a wrong register for fillrect operations.
This sometimes caused empty console space (for example after 'clear')
to have a different colour than desired. Fix this by writing to the
correct register.
Many thanks to Daniel Drake and Jon Nettleton for pointing out this
issue and pointing me in the right direction for the fix.

Fixes http://dev.laptop.org/ticket/9323

Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Joseph Chan <JosephChan@via.com.tw>
Cc: Daniel Drake <dsd@laptop.org>
Cc: Jon Nettleton <jon.nettleton@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/video/via/accel.c

index 9d4f3a49ba4a5038a333c940351dd85cf5df0deb..12b5990bf456fdf7e04b9311cc2b3552b1127e68 100644 (file)
@@ -277,11 +277,12 @@ static int hw_bitblt_2(void __iomem *engine, u8 op, u32 width, u32 height,
                writel(tmp, engine + 0x1C);
        }
 
-       if (op != VIA_BITBLT_COLOR)
+       if (op == VIA_BITBLT_FILL) {
+               writel(fg_color, engine + 0x58);
+       } else if (op == VIA_BITBLT_MONO) {
                writel(fg_color, engine + 0x4C);
-
-       if (op == VIA_BITBLT_MONO)
                writel(bg_color, engine + 0x50);
+       }
 
        if (op == VIA_BITBLT_FILL)
                ge_cmd |= fill_rop << 24 | 0x00002000 | 0x00000001;