drivers/gpu/drm/via/via_crtc.c |   19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

New commits:
commit 1918344f9c8e5355a5642c86d3bf33405860d11c
Author: James Simmons <jsimm...@infradead.org>
Date:   Wed May 22 11:00:37 2013 -0400

    For newer platforms we need to explicatly set the LUT to 8 bits in size

diff --git a/drivers/gpu/drm/via/via_crtc.c b/drivers/gpu/drm/via/via_crtc.c
index c923936..10a5017 100644
--- a/drivers/gpu/drm/via/via_crtc.c
+++ b/drivers/gpu/drm/via/via_crtc.c
@@ -254,10 +254,27 @@ via_iga2_gamma_set(struct drm_crtc *crtc, u16 *red, u16 
*green, u16 *blue,
                /* access Primary Display's LUT */
                vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
        } else {
+               u8 reg_bits = BIT(1);
+
                svga_wseq_mask(VGABASE, 0x1A, BIT(0), BIT(0));
-               /* Enable Gamma */
+               /* Bit 1 enables gamma */
                svga_wcrt_mask(VGABASE, 0x6A, BIT(1), BIT(1));
 
+               /* Old platforms LUT are 6 bits in size.
+                * Newer it is 8 bits. */
+               switch (crtc->dev->pdev->device) {
+               case PCI_DEVICE_ID_VIA_CLE266:
+               case PCI_DEVICE_ID_VIA_KM400:
+               case PCI_DEVICE_ID_VIA_K8M800:
+               case PCI_DEVICE_ID_VIA_PM800:
+                       break;
+
+               default:
+                       reg_bits |= BIT(5);     
+                       break;
+               }
+               svga_wcrt_mask(VGABASE, 0x6A, reg_bits, reg_bits);
+
                /* Before we fill the second LUT, we have to enable
                 * second display channel. If it's enabled before,
                 * we don't need to do that, or else the secondary
_______________________________________________
Openchrome-devel mailing list
Openchrome-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to