> -----Original Message-----
> From: Intel-gfx <intel-gfx-boun...@lists.freedesktop.org> On Behalf Of Jani 
> Nikula
> Sent: Wednesday, January 12, 2022 4:33 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nik...@intel.com>
> Subject: [Intel-gfx] [PATCH RESEND 2/7] drm/i915/mst: abstract
> intel_dp_ack_sink_irq_esi()
> 
> Smaller functions make the thing easier to read. Debug log failures to ack.
> 
> Note: Looks like we have the retry loop simply because of hysterical raisins, 
> dating
> back to the original DP MST enabling. Keep it, though I have no idea why we 
> have it.

Reviewed-by: Uma Shankar <uma.shan...@intel.com>

> Signed-off-by: Jani Nikula <jani.nik...@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 25 +++++++++++++++----------
>  1 file changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index e789ecbc69f3..a301220ce2ad 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2821,6 +2821,19 @@ intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8
> *sink_irq_vector)
>               DP_DPRX_ESI_LEN;
>  }
> 
> +static bool intel_dp_ack_sink_irq_esi(struct intel_dp *intel_dp, u8
> +esi[4]) {
> +     int retry;
> +
> +     for (retry = 0; retry < 3; retry++) {
> +             if (drm_dp_dpcd_write(&intel_dp->aux, DP_SINK_COUNT_ESI + 1,
> +                                   &esi[1], 3) == 3)
> +                     return true;
> +     }
> +
> +     return false;
> +}
> +
>  bool
>  intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
>                      const struct drm_connector_state *conn_state) @@ -3661,7
> +3674,6 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
>                */
>               u8 esi[DP_DPRX_ESI_LEN+2] = {};
>               bool handled;
> -             int retry;
> 
>               if (!intel_dp_get_sink_irq_esi(intel_dp, esi)) {
>                       drm_dbg_kms(&i915->drm,
> @@ -3686,15 +3698,8 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
>               if (!handled)
>                       break;
> 
> -             for (retry = 0; retry < 3; retry++) {
> -                     int wret;
> -
> -                     wret = drm_dp_dpcd_write(&intel_dp->aux,
> -                                              DP_SINK_COUNT_ESI+1,
> -                                              &esi[1], 3);
> -                     if (wret == 3)
> -                             break;
> -             }
> +             if (!intel_dp_ack_sink_irq_esi(intel_dp, esi))
> +                     drm_dbg_kms(&i915->drm, "Failed to ack ESI\n");
>       }
> 
>       return link_ok;
> --
> 2.30.2

Reply via email to