Factor out a function to modeset commit a set of pipes, which a later
patch will reuse for DP link retraining.

Signed-off-by: Imre Deak <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_ddi.c     | 31 +-----------------
 drivers/gpu/drm/i915/display/intel_display.c | 34 ++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_display.h |  3 ++
 3 files changed, 38 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 3c3fc53376ce3..170ba01786cf8 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4441,35 +4441,6 @@ intel_ddi_init_dp_connector(struct intel_digital_port 
*dig_port)
        return connector;
 }
 
-static int modeset_pipe(struct drm_crtc *crtc,
-                       struct drm_modeset_acquire_ctx *ctx)
-{
-       struct drm_atomic_state *state;
-       struct drm_crtc_state *crtc_state;
-       int ret;
-
-       state = drm_atomic_state_alloc(crtc->dev);
-       if (!state)
-               return -ENOMEM;
-
-       state->acquire_ctx = ctx;
-       to_intel_atomic_state(state)->internal = true;
-
-       crtc_state = drm_atomic_get_crtc_state(state, crtc);
-       if (IS_ERR(crtc_state)) {
-               ret = PTR_ERR(crtc_state);
-               goto out;
-       }
-
-       crtc_state->connectors_changed = true;
-
-       ret = drm_atomic_commit(state);
-out:
-       drm_atomic_state_put(state);
-
-       return ret;
-}
-
 static int intel_hdmi_reset_link(struct intel_encoder *encoder,
                                 struct drm_modeset_acquire_ctx *ctx)
 {
@@ -4539,7 +4510,7 @@ static int intel_hdmi_reset_link(struct intel_encoder 
*encoder,
         * would be perfectly happy if were to just reconfigure
         * the SCDC settings on the fly.
         */
-       return modeset_pipe(&crtc->base, ctx);
+       return intel_modeset_commit_pipes(dev_priv, BIT(crtc->pipe), ctx);
 }
 
 static enum intel_hotplug_state
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index cce1420fb5417..4edb1ede4a1b4 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5569,6 +5569,40 @@ int intel_modeset_all_pipes_late(struct 
intel_atomic_state *state,
        return 0;
 }
 
+int intel_modeset_commit_pipes(struct drm_i915_private *i915,
+                              u8 pipe_mask,
+                              struct drm_modeset_acquire_ctx *ctx)
+{
+       struct drm_atomic_state *state;
+       struct intel_crtc *crtc;
+       int ret;
+
+       state = drm_atomic_state_alloc(&i915->drm);
+       if (!state)
+               return -ENOMEM;
+
+       state->acquire_ctx = ctx;
+       to_intel_atomic_state(state)->internal = true;
+
+       for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, pipe_mask) {
+               struct intel_crtc_state *crtc_state =
+                       intel_atomic_get_crtc_state(state, crtc);
+
+               if (IS_ERR(crtc_state)) {
+                       ret = PTR_ERR(crtc_state);
+                       goto out;
+               }
+
+               crtc_state->uapi.connectors_changed = true;
+       }
+
+       ret = drm_atomic_commit(state);
+out:
+       drm_atomic_state_put(state);
+
+       return ret;
+}
+
 /*
  * This implements the workaround described in the "notes" section of the mode
  * set sequence documentation. When going from no pipes or single pipe to
diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
b/drivers/gpu/drm/i915/display/intel_display.h
index 56d1c0e3e62cd..dfdc42cef8723 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -537,6 +537,9 @@ int intel_modeset_pipes_in_mask_early(struct 
intel_atomic_state *state,
                                      const char *reason, u8 pipe_mask);
 int intel_modeset_all_pipes_late(struct intel_atomic_state *state,
                                 const char *reason);
+int intel_modeset_commit_pipes(struct drm_i915_private *i915,
+                              u8 pipe_mask,
+                              struct drm_modeset_acquire_ctx *ctx);
 void intel_modeset_get_crtc_power_domains(struct intel_crtc_state *crtc_state,
                                          struct intel_power_domain_mask 
*old_domains);
 void intel_modeset_put_crtc_power_domains(struct intel_crtc *crtc,
-- 
2.43.3

Reply via email to