drm/i915: check for audio and infoframe changes across mode sets v2
authorJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 5 Nov 2014 22:26:09 +0000 (14:26 -0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 14 Nov 2014 09:29:23 +0000 (10:29 +0100)
If these change (e.g. after a modeset following a fastboot), we need to
do a full mode set.

v2:
  - put under pipe_config check so we don't deref a null state (Jesse)

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index 8b5efe6f3ee621e40aa33cb5adee8d519578f8a0..e9b579fd9fc4744a44f68140e066eefdcd3387e5 100644 (file)
@@ -11325,8 +11325,18 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
                                                   &modeset_pipes,
                                                   &prepare_pipes,
                                                   &disable_pipes);
-       if (IS_ERR(pipe_config))
+       if (IS_ERR(pipe_config)) {
                goto fail;
+       } else if (pipe_config) {
+               if (to_intel_crtc(set->crtc)->new_config->has_audio !=
+                   to_intel_crtc(set->crtc)->config.has_audio)
+                       config->mode_changed = true;
+
+               /* Force mode sets for any infoframe stuff */
+               if (to_intel_crtc(set->crtc)->new_config->has_infoframe ||
+                   to_intel_crtc(set->crtc)->config.has_infoframe)
+                       config->mode_changed = true;
+       }
 
        /* set_mode will free it in the mode_changed case */
        if (!config->mode_changed)