diff mbox series

[2/7] drm/i915/mst: abstract intel_dp_ack_sink_irq_esi()

Message ID 1049e7188a76c421fab7797b5c4a6aa1b709f4c9.1641317930.git.jani.nikula@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/mst: DP MST ESI handling improvements | expand

Commit Message

Jani Nikula Jan. 4, 2022, 5:39 p.m. UTC
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.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

Comments

Shankar, Uma Jan. 20, 2022, 10:28 a.m. UTC | #1
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani Nikula
> Sent: Tuesday, January 4, 2022 11:10 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>
> Subject: [Intel-gfx] [PATCH 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

Nit: Typo in reasons.

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

> back to the original DP MST enabling. Keep it, though I have no idea why we have it.
> 
> Signed-off-by: Jani Nikula <jani.nikula@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 357c39e09bf6..ebf80a875a41 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2820,6 +2820,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) @@ -3660,7
> +3673,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,
> @@ -3685,15 +3697,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
Jani Nikula Jan. 20, 2022, 10:32 a.m. UTC | #2
On Thu, 20 Jan 2022, "Shankar, Uma" <uma.shankar@intel.com> wrote:
>> -----Original Message-----
>> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani Nikula
>> Sent: Tuesday, January 4, 2022 11:10 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: Nikula, Jani <jani.nikula@intel.com>
>> Subject: [Intel-gfx] [PATCH 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
>
> Nit: Typo in reasons.

;)

http://www.catb.org/jargon/html/H/hysterical-reasons.html

>
> Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>
>> back to the original DP MST enabling. Keep it, though I have no idea why we have it.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@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 357c39e09bf6..ebf80a875a41 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -2820,6 +2820,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) @@ -3660,7
>> +3673,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,
>> @@ -3685,15 +3697,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
>
Shankar, Uma Jan. 20, 2022, 10:35 a.m. UTC | #3
> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Thursday, January 20, 2022 4:02 PM
> To: Shankar, Uma <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org
> Subject: RE: [Intel-gfx] [PATCH 2/7] drm/i915/mst: abstract
> intel_dp_ack_sink_irq_esi()
> 
> On Thu, 20 Jan 2022, "Shankar, Uma" <uma.shankar@intel.com> wrote:
> >> -----Original Message-----
> >> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani
> Nikula
> >> Sent: Tuesday, January 4, 2022 11:10 PM
> >> To: intel-gfx@lists.freedesktop.org
> >> Cc: Nikula, Jani <jani.nikula@intel.com>
> >> Subject: [Intel-gfx] [PATCH 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
> >
> > Nit: Typo in reasons.
> 
> ;)
> 
> http://www.catb.org/jargon/html/H/hysterical-reasons.html

Oh, didn't knew that 
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 357c39e09bf6..ebf80a875a41 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2820,6 +2820,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)
@@ -3660,7 +3673,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,
@@ -3685,15 +3697,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;