]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/i915: Factor out set_encoder_for_connector()
authorImre Deak <imre.deak@intel.com>
Wed, 10 May 2023 10:31:23 +0000 (13:31 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 16 May 2023 13:53:47 +0000 (16:53 +0300)
Factor out a function setting the encoder and CRTC in the connector
atomic state, required by a follow up patch.

No functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230510103131.1618266-7-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_modeset_setup.c

index 2c93f4c5dc8cf8ba68cf1e783f7bfa1b731e1408..6f59654ea0261ac0bd0da31d6188a605af2fc86b 100644 (file)
@@ -86,6 +86,24 @@ static void intel_crtc_disable_noatomic_begin(struct intel_crtc *crtc,
                                                   &crtc_state->shared_dpll->state);
 }
 
+static void set_encoder_for_connector(struct intel_connector *connector,
+                                     struct intel_encoder *encoder)
+{
+       struct drm_connector_state *conn_state = connector->base.state;
+
+       if (conn_state->crtc)
+               drm_connector_put(&connector->base);
+
+       if (encoder) {
+               conn_state->best_encoder = &encoder->base;
+               conn_state->crtc = encoder->base.crtc;
+               drm_connector_get(&connector->base);
+       } else {
+               conn_state->best_encoder = NULL;
+               conn_state->crtc = NULL;
+       }
+}
+
 static void intel_crtc_disable_noatomic_complete(struct intel_crtc *crtc)
 {
        struct intel_encoder *encoder;
@@ -140,8 +158,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_i915_private
                struct intel_encoder *encoder =
                        to_intel_encoder(connector->base.encoder);
 
-               if (conn_state->crtc)
-                       drm_connector_put(&connector->base);
+               set_encoder_for_connector(connector, encoder);
 
                if (encoder) {
                        struct intel_crtc *crtc =
@@ -149,14 +166,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_i915_private
                        const struct intel_crtc_state *crtc_state =
                                to_intel_crtc_state(crtc->base.state);
 
-                       conn_state->best_encoder = &encoder->base;
-                       conn_state->crtc = &crtc->base;
                        conn_state->max_bpc = (crtc_state->pipe_bpp ?: 24) / 3;
-
-                       drm_connector_get(&connector->base);
-               } else {
-                       conn_state->best_encoder = NULL;
-                       conn_state->crtc = NULL;
                }
        }
        drm_connector_list_iter_end(&conn_iter);