drm/i915/dp: refactor clear/wait for act sent
authorJani Nikula <jani.nikula@intel.com>
Wed, 20 Nov 2024 12:43:15 +0000 (14:43 +0200)
committerJani Nikula <jani.nikula@intel.com>
Fri, 22 Nov 2024 11:36:59 +0000 (13:36 +0200)
Move clear_act_sent() and wait_for_act_sent() to intel_ddi.[ch] and make
independent of DP MST. They'll be needed for 128b/132b SST
operation. Rename accordingly.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ef05f5bc222e8ba48d84f75a9ea5dd29667055d2.1732106557.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_ddi.c
drivers/gpu/drm/i915/display/intel_ddi.h
drivers/gpu/drm/i915/display/intel_dp_mst.c

index cbd5d3dd7adc81ec3bdbc9dc5fc7235cb8ef9027..afa86f8302a452047b44938dbce0919624091786 100644 (file)
@@ -2211,8 +2211,8 @@ i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder,
                return DP_TP_CTL(encoder->port);
 }
 
-i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder,
-                           const struct intel_crtc_state *crtc_state)
+static i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder,
+                                  const struct intel_crtc_state *crtc_state)
 {
        struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 
@@ -2223,6 +2223,25 @@ i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder,
                return DP_TP_STATUS(encoder->port);
 }
 
+void intel_ddi_clear_act_sent(struct intel_encoder *encoder,
+                             const struct intel_crtc_state *crtc_state)
+{
+       struct intel_display *display = to_intel_display(encoder);
+
+       intel_de_write(display, dp_tp_status_reg(encoder, crtc_state),
+                      DP_TP_STATUS_ACT_SENT);
+}
+
+void intel_ddi_wait_for_act_sent(struct intel_encoder *encoder,
+                                const struct intel_crtc_state *crtc_state)
+{
+       struct intel_display *display = to_intel_display(encoder);
+
+       if (intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state),
+                                 DP_TP_STATUS_ACT_SENT, 1))
+               drm_err(display->drm, "Timed out waiting for ACT sent\n");
+}
+
 static void intel_dp_sink_set_msa_timing_par_ignore_state(struct intel_dp *intel_dp,
                                                          const struct intel_crtc_state *crtc_state,
                                                          bool enable)
index 0d5d820740f6f96216eb7ac8048de4a660bea13c..2faadd1441e2ff263f3713746ee6d04352d39b04 100644 (file)
@@ -26,8 +26,12 @@ enum transcoder;
 
 i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder,
                         const struct intel_crtc_state *crtc_state);
-i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder,
-                           const struct intel_crtc_state *crtc_state);
+
+void intel_ddi_clear_act_sent(struct intel_encoder *encoder,
+                             const struct intel_crtc_state *crtc_state);
+void intel_ddi_wait_for_act_sent(struct intel_encoder *encoder,
+                                const struct intel_crtc_state *crtc_state);
+
 void intel_ddi_fdi_post_disable(struct intel_atomic_state *state,
                                struct intel_encoder *intel_encoder,
                                const struct intel_crtc_state *old_crtc_state,
index 9dd8d2d9048b57b3b91e86d18ce0028d71d915bc..c59c2c14679c4a3e17fe68509dd185c564d3252b 100644 (file)
@@ -966,28 +966,6 @@ mst_connector_atomic_check(struct drm_connector *connector,
                                                intel_connector->port);
 }
 
-static void clear_act_sent(struct intel_encoder *encoder,
-                          const struct intel_crtc_state *crtc_state)
-{
-       struct intel_display *display = to_intel_display(encoder);
-
-       intel_de_write(display, dp_tp_status_reg(encoder, crtc_state),
-                      DP_TP_STATUS_ACT_SENT);
-}
-
-static void wait_for_act_sent(struct intel_encoder *encoder,
-                             const struct intel_crtc_state *crtc_state)
-{
-       struct intel_display *display = to_intel_display(encoder);
-       struct intel_dp *intel_dp = to_primary_dp(encoder);
-
-       if (intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state),
-                                 DP_TP_STATUS_ACT_SENT, 1))
-               drm_err(display->drm, "Timed out waiting for ACT sent\n");
-
-       drm_dp_check_act_status(&intel_dp->mst_mgr);
-}
-
 static void mst_stream_disable(struct intel_atomic_state *state,
                               struct intel_encoder *encoder,
                               const struct intel_crtc_state *old_crtc_state,
@@ -1049,13 +1027,14 @@ static void mst_stream_post_disable(struct intel_atomic_state *state,
 
        drm_dp_remove_payload_part1(&intel_dp->mst_mgr, new_mst_state, new_payload);
 
-       clear_act_sent(encoder, old_crtc_state);
+       intel_ddi_clear_act_sent(encoder, old_crtc_state);
 
        intel_de_rmw(display,
                     TRANS_DDI_FUNC_CTL(display, old_crtc_state->cpu_transcoder),
                     TRANS_DDI_DP_VC_PAYLOAD_ALLOC, 0);
 
-       wait_for_act_sent(encoder, old_crtc_state);
+       intel_ddi_wait_for_act_sent(encoder, old_crtc_state);
+       drm_dp_check_act_status(&intel_dp->mst_mgr);
 
        drm_dp_remove_payload_part2(&intel_dp->mst_mgr, new_mst_state,
                                    old_payload, new_payload);
@@ -1299,7 +1278,7 @@ static void mst_stream_enable(struct intel_atomic_state *state,
 
        intel_ddi_enable_transcoder_func(encoder, pipe_config);
 
-       clear_act_sent(encoder, pipe_config);
+       intel_ddi_clear_act_sent(encoder, pipe_config);
 
        intel_de_rmw(display, TRANS_DDI_FUNC_CTL(display, trans), 0,
                     TRANS_DDI_DP_VC_PAYLOAD_ALLOC);
@@ -1307,7 +1286,8 @@ static void mst_stream_enable(struct intel_atomic_state *state,
        drm_dbg_kms(display->drm, "active links %d\n",
                    intel_dp->active_mst_links);
 
-       wait_for_act_sent(encoder, pipe_config);
+       intel_ddi_wait_for_act_sent(encoder, pipe_config);
+       drm_dp_check_act_status(&intel_dp->mst_mgr);
 
        if (first_mst_stream)
                intel_ddi_wait_for_fec_status(encoder, pipe_config, true);