drm/nouveau: Implement the vblank DRM hooks.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index c5f29f0..d72aa8d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -669,13 +669,13 @@
if (ret)
goto out_fifo;
+ ret = drm_vblank_init(dev, nv_two_heads(dev) ? 2 : 1);
+ if (ret)
+ goto out_vblank;
+
ret = nouveau_irq_init(dev);
if (ret)
- goto out_display;
-
- ret = drm_vblank_init(dev, 0);
- if (ret)
- goto out_irq;
+ goto out_vblank;
/* what about PVIDEO/PCRTC/PRAMDAC etc? */
@@ -701,7 +701,8 @@
nouveau_fence_fini(dev);
out_irq:
nouveau_irq_fini(dev);
-out_display:
+out_vblank:
+ drm_vblank_cleanup(dev);
engine->display.destroy(dev);
out_fifo:
if (!nouveau_noaccel)
@@ -772,6 +773,7 @@
nouveau_mem_vram_fini(dev);
nouveau_irq_fini(dev);
+ drm_vblank_cleanup(dev);
nouveau_pm_fini(dev);
nouveau_bios_takedown(dev);