drm/nouveau/kms/nv50-: implement proper push buffer control logic
[linux-2.6-microblaze.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / dmacgf119.c
index edf7dd0..76425e8 100644 (file)
@@ -53,6 +53,8 @@ gf119_disp_dmac_fini(struct nv50_disp_chan *chan)
                nvkm_error(subdev, "ch %d fini: %08x\n", user,
                           nvkm_rd32(device, 0x610490 + (ctrl * 0x10)));
        }
+
+       chan->suspend_put = nvkm_rd32(device, 0x640000 + (ctrl * 0x1000));
 }
 
 static int
@@ -68,7 +70,7 @@ gf119_disp_dmac_init(struct nv50_disp_chan *chan)
        nvkm_wr32(device, 0x610498 + (ctrl * 0x0010), 0x00010000);
        nvkm_wr32(device, 0x61049c + (ctrl * 0x0010), 0x00000001);
        nvkm_mask(device, 0x610490 + (ctrl * 0x0010), 0x00000010, 0x00000010);
-       nvkm_wr32(device, 0x640000 + (ctrl * 0x1000), 0x00000000);
+       nvkm_wr32(device, 0x640000 + (ctrl * 0x1000), chan->suspend_put);
        nvkm_wr32(device, 0x610490 + (ctrl * 0x0010), 0x00000013);
 
        /* wait for it to go inactive */