Browse Source

drm/nv50/disp: disconnect encoders before reprogramming them

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>
Ben Skeggs 13 years ago
parent
commit
7ae494e80c
2 changed files with 2 additions and 6 deletions
  1. 1 6
      drivers/gpu/drm/nouveau/nv50_dac.c
  2. 1 0
      drivers/gpu/drm/nouveau/nv50_sor.c

+ 1 - 6
drivers/gpu/drm/nouveau/nv50_dac.c

@@ -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,

+ 1 - 0
drivers/gpu/drm/nouveau/nv50_sor.c

@@ -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