static void
 nv50_crtc_commit(struct drm_crtc *crtc)
 {
-       struct drm_crtc *crtc2;
        struct drm_device *dev = crtc->dev;
        struct drm_nouveau_private *dev_priv = dev->dev_private;
        struct nouveau_channel *evo = dev_priv->evo;
 
        nv50_crtc_blank(nv_crtc, false);
 
-       /* Explicitly blank all unused crtc's. */
-       list_for_each_entry(crtc2, &dev->mode_config.crtc_list, head) {
-               if (!drm_helper_crtc_in_use(crtc2))
-                       nv50_crtc_blank(nouveau_crtc(crtc2), true);
-       }
-
        ret = RING_SPACE(evo, 2);
        if (ret) {
                NV_ERROR(dev, "no space while committing crtc\n");
                return;
        }
        BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1);
-       OUT_RING(evo, 0);
-       FIRE_RING(evo);
+       OUT_RING  (evo, 0);
+       FIRE_RING (evo);
 }
 
 static bool
 
 
        if (!nv_encoder->crtc)
                return;
+       nv50_crtc_blank(nouveau_crtc(nv_encoder->crtc), true);
 
        NV_DEBUG_KMS(dev, "Disconnecting DAC %d\n", nv_encoder->or);
 
-       ret = RING_SPACE(evo, 2);
+       ret = RING_SPACE(evo, 4);
        if (ret) {
                NV_ERROR(dev, "no space while disconnecting DAC\n");
                return;
        }
        BEGIN_RING(evo, 0, NV50_EVO_DAC(nv_encoder->or, MODE_CTRL), 1);
-       OUT_RING(evo, 0);
+       OUT_RING  (evo, 0);
+       BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1);
+       OUT_RING  (evo, 0);
 
        nv_encoder->crtc = NULL;
 }
 
 
        if (!nv_encoder->crtc)
                return;
+       nv50_crtc_blank(nouveau_crtc(nv_encoder->crtc), true);
 
        NV_DEBUG_KMS(dev, "Disconnecting SOR %d\n", nv_encoder->or);
 
-       ret = RING_SPACE(evo, 2);
+       ret = RING_SPACE(evo, 4);
        if (ret) {
                NV_ERROR(dev, "no space while disconnecting SOR\n");
                return;
        }
        BEGIN_RING(evo, 0, NV50_EVO_SOR(nv_encoder->or, MODE_CTRL), 1);
-       OUT_RING(evo, 0);
+       OUT_RING  (evo, 0);
+       BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1);
+       OUT_RING  (evo, 0);
 
        nv_encoder->crtc = NULL;
        nv_encoder->last_dpms = DRM_MODE_DPMS_OFF;