drm/i915: Only update mode related state if a modeset happened.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 5 Aug 2015 10:37:10 +0000 (12:37 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 14 Aug 2015 15:50:36 +0000 (17:50 +0200)
The rest will be a noop anyway, since without modeset there will be
no updated dplls and no modeset state to update.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index 06be517c247e58fb37b341f2ce36061731c00ad7..dc4812a493f55c91ea18d0f9bdaf339d2047caf6 100644 (file)
@@ -12183,33 +12183,15 @@ fail:
        return ret;
 }
 
-static bool intel_crtc_in_use(struct drm_crtc *crtc)
-{
-       struct drm_encoder *encoder;
-       struct drm_device *dev = crtc->dev;
-
-       list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
-               if (encoder->crtc == crtc)
-                       return true;
-
-       return false;
-}
-
 static void
-intel_modeset_update_state(struct drm_atomic_state *state)
+intel_modeset_update_crtc_state(struct drm_atomic_state *state)
 {
        struct drm_crtc *crtc;
        struct drm_crtc_state *crtc_state;
        int i;
 
-       intel_shared_dpll_commit(state);
-
-       drm_atomic_helper_update_legacy_modeset_state(state->dev, state);
-
        /* Double check state. */
        for_each_crtc_in_state(state, crtc, crtc_state, i) {
-               WARN_ON(crtc->state->enable != intel_crtc_in_use(crtc));
-
                to_intel_crtc(crtc)->config = to_intel_crtc_state(crtc->state);
 
                /* Update hwmode for vblank functions */
@@ -13112,12 +13094,14 @@ static int intel_atomic_commit(struct drm_device *dev,
 
        /* Only after disabling all output pipelines that will be changed can we
         * update the the output configuration. */
-       intel_modeset_update_state(state);
+       intel_modeset_update_crtc_state(state);
 
-       /* The state has been swaped above, so state actually contains the
-        * old state now. */
-       if (any_ms)
+       if (any_ms) {
+               intel_shared_dpll_commit(state);
+
+               drm_atomic_helper_update_legacy_modeset_state(state->dev, state);
                modeset_update_crtc_power_domains(state);
+       }
 
        /* Now enable the clocks, plane, pipe, and connectors that we set up. */
        for_each_crtc_in_state(state, crtc, crtc_state, i) {