drm/i915: Use atomic state in intel_fb_initial_config.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 17 Feb 2016 08:18:39 +0000 (09:18 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 18 Feb 2016 09:41:54 +0000 (10:41 +0100)
This is another step in removing legacy state.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1455697119-31416-6-git-send-email-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/i915/intel_fbdev.c

index 09840f4..97a91e6 100644 (file)
@@ -406,8 +406,8 @@ retry:
                        continue;
                }
 
-               encoder = connector->encoder;
-               if (!encoder || WARN_ON(!encoder->crtc)) {
+               encoder = connector->state->best_encoder;
+               if (!encoder || WARN_ON(!connector->state->crtc)) {
                        if (connector->force > DRM_FORCE_OFF)
                                goto bail;
 
@@ -420,7 +420,7 @@ retry:
 
                num_connectors_enabled++;
 
-               new_crtc = intel_fb_helper_crtc(fb_helper, encoder->crtc);
+               new_crtc = intel_fb_helper_crtc(fb_helper, connector->state->crtc);
 
                /*
                 * Make sure we're not trying to drive multiple connectors
@@ -466,17 +466,22 @@ retry:
                         * usually contains. But since our current
                         * code puts a mode derived from the post-pfit timings
                         * into crtc->mode this works out correctly.
+                        *
+                        * This is crtc->mode and not crtc->state->mode for the
+                        * fastboot check to work correctly. crtc_state->mode has
+                        * I915_MODE_FLAG_INHERITED, which we clear to force check
+                        * state.
                         */
                        DRM_DEBUG_KMS("looking for current mode on connector %s\n",
                                      connector->name);
-                       modes[i] = &encoder->crtc->mode;
+                       modes[i] = &connector->state->crtc->mode;
                }
                crtcs[i] = new_crtc;
 
                DRM_DEBUG_KMS("connector %s on pipe %c [CRTC:%d]: %dx%d%s\n",
                              connector->name,
-                             pipe_name(to_intel_crtc(encoder->crtc)->pipe),
-                             encoder->crtc->base.id,
+                             pipe_name(to_intel_crtc(connector->state->crtc)->pipe),
+                             connector->state->crtc->base.id,
                              modes[i]->hdisplay, modes[i]->vdisplay,
                              modes[i]->flags & DRM_MODE_FLAG_INTERLACE ? "i" :"");