drm/nv50/disp: wait for encoder disconnect to complete before link training
authorBen Skeggs <bskeggs@redhat.com>
Sun, 16 Oct 2011 22:56:09 +0000 (08:56 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 21 Dec 2011 09:01:20 +0000 (19:01 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nv50_sor.c

index 3fab98a2f9592b6c40253026b632d6400090e3aa..48c09f5cd4fbfd114bbff98ea52dea0aa3cae4f5 100644 (file)
@@ -174,7 +174,12 @@ nv50_sor_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
 static void
 nv50_sor_prepare(struct drm_encoder *encoder)
 {
+       struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
        nv50_sor_disconnect(encoder);
+       if (nv_encoder->dcb->type == OUTPUT_DP) {
+               /* avoid race between link training and supervisor intr */
+               nv50_display_sync(encoder->dev);
+       }
 }
 
 static void