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 808f3ec8f82703ef59fb9daf6447b299cdf74389..a0f2bebf49e302e3990b89146523e84695c25d3d 100644 (file)
@@ -199,11 +199,6 @@ nv50_dac_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
        return true;
 }
 
-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 da603b1d8e3f9cea9ab0d0499c4e640b3d76dc5d..3fab98a2f9592b6c40253026b632d6400090e3aa 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