drm/nv50/disp: disconnect encoders before reprogramming them
authorBen Skeggs <bskeggs@redhat.com>
Fri, 14 Oct 2011 04:43:20 +0000 (14:43 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 21 Dec 2011 09:01:19 +0000 (19:01 +1000)
Fixes a case where we don't get separate supervisor interrupt sequences for
disconnect and modeset events.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nv50_dac.c
drivers/gpu/drm/nouveau/nv50_sor.c

index 808f3ec..a0f2beb 100644 (file)
@@ -200,11 +200,6 @@ nv50_dac_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
 }
 
 static void
-nv50_dac_prepare(struct drm_encoder *encoder)
-{
-}
-
-static void
 nv50_dac_commit(struct drm_encoder *encoder)
 {
 }
@@ -266,7 +261,7 @@ static const struct drm_encoder_helper_funcs nv50_dac_helper_funcs = {
        .save = nv50_dac_save,
        .restore = nv50_dac_restore,
        .mode_fixup = nv50_dac_mode_fixup,
-       .prepare = nv50_dac_prepare,
+       .prepare = nv50_dac_disconnect,
        .commit = nv50_dac_commit,
        .mode_set = nv50_dac_mode_set,
        .get_crtc = nv50_dac_crtc_get,
index da603b1..3fab98a 100644 (file)
@@ -174,6 +174,7 @@ nv50_sor_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
 static void
 nv50_sor_prepare(struct drm_encoder *encoder)
 {
+       nv50_sor_disconnect(encoder);
 }
 
 static void