drm/nvd0/disp: fixup clut so it actually works
authorBen Skeggs <bskeggs@redhat.com>
Thu, 7 Jul 2011 04:49:24 +0000 (14:49 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 20 Sep 2011 06:07:05 +0000 (16:07 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvd0_display.c

index b869ba0fb6cffaaaf5a2d8ecd8ee9e7a50324cce..376acc1619a0b738951ea28508df780b9a62419a 100644 (file)
@@ -269,6 +269,8 @@ nvd0_crtc_commit(struct drm_crtc *crtc)
                evo_data(push, 0x00000000);
                evo_mthd(push, 0x045c + (nv_crtc->index * 0x300), 1);
                evo_data(push, MEM_VRAM);
+               evo_mthd(push, 0x0430 + (nv_crtc->index * 0x300), 1);
+               evo_data(push, 0xffffff00);
                evo_kick(push, crtc->dev, 0);
        }
 
@@ -387,9 +389,9 @@ nvd0_crtc_lut_load(struct drm_crtc *crtc)
        int i;
 
        for (i = 0; i < 256; i++) {
-               writew(nv_crtc->lut.r[i] >> 2, lut + 8*i + 0);
-               writew(nv_crtc->lut.g[i] >> 2, lut + 8*i + 2);
-               writew(nv_crtc->lut.b[i] >> 2, lut + 8*i + 4);
+               writew(0x6000 + (nv_crtc->lut.r[i] >> 2), lut + (i * 0x20) + 0);
+               writew(0x6000 + (nv_crtc->lut.g[i] >> 2), lut + (i * 0x20) + 2);
+               writew(0x6000 + (nv_crtc->lut.b[i] >> 2), lut + (i * 0x20) + 4);
        }
 }
 
@@ -530,7 +532,7 @@ nvd0_crtc_create(struct drm_device *dev, int index)
        if (ret)
                goto out;
 
-       ret = nouveau_bo_new(dev, 4096, 0x100, TTM_PL_FLAG_VRAM,
+       ret = nouveau_bo_new(dev, 8192, 0x100, TTM_PL_FLAG_VRAM,
                             0, 0x0000, &nv_crtc->lut.nvbo);
        if (!ret) {
                ret = nouveau_bo_pin(nv_crtc->lut.nvbo, TTM_PL_FLAG_VRAM);