summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nv50_sor.c
diff options
context:
space:
mode:
authorBen Skeggs2011-10-17 00:56:09 +0200
committerBen Skeggs2011-12-21 10:01:20 +0100
commit9976f15c27d573479d1cc79c81c2c2fc7ea93eb2 (patch)
tree57fca7491d7713244c4eac03125d5bb54e976089 /drivers/gpu/drm/nouveau/nv50_sor.c
parentdrm/nv50/disp: disconnect encoders before reprogramming them (diff)
downloadkernel-qcow2-linux-9976f15c27d573479d1cc79c81c2c2fc7ea93eb2.tar.gz
kernel-qcow2-linux-9976f15c27d573479d1cc79c81c2c2fc7ea93eb2.tar.xz
kernel-qcow2-linux-9976f15c27d573479d1cc79c81c2c2fc7ea93eb2.zip
drm/nv50/disp: wait for encoder disconnect to complete before link training
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_sor.c')
-rw-r--r--drivers/gpu/drm/nouveau/nv50_sor.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_sor.c b/drivers/gpu/drm/nouveau/nv50_sor.c
index 3fab98a2f959..48c09f5cd4fb 100644
--- a/drivers/gpu/drm/nouveau/nv50_sor.c
+++ b/drivers/gpu/drm/nouveau/nv50_sor.c
@@ -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