[PATCH RFC 2/3] drm/i915/dp: On AUX_CH tx timeout, wake up the sink

From: Arun R Murthy

Date: Mon Mar 09 2026 - 03:34:00 EST


On a native AUX_CH transaction when the timer on DPTX timesout this can
be due to DPTX sending invalid command or the sink is waking up from
sleept state and hence there is a No Reply from DPRX. In this case try
to wake up the sink device.

Signed-off-by: Arun R Murthy <arun.r.murthy@xxxxxxxxx>
---
drivers/gpu/drm/i915/display/intel_dp_aux.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux.c b/drivers/gpu/drm/i915/display/intel_dp_aux.c
index b20ec3e589fadc4972efb77286978f38a527bd1c..0a9e2d6cdbc5d9e0d17b2db60a32cf20a3bad6b6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux.c
@@ -372,8 +372,17 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
* Timeout errors from the HW already meet this
* requirement so skip to next iteration
*/
- if (status & DP_AUX_CH_CTL_TIME_OUT_ERROR)
+ if (status & DP_AUX_CH_CTL_TIME_OUT_ERROR) {
+ /*
+ * Timeout can occur when there is no reply
+ * from the sink and this can be either due to
+ * DPTX sending wrong command or sink is sleep
+ * state/waking up from sleep state.
+ * Spec DP2.1 Section 2.11.7.1.5.8
+ */
+ drm_dp_wake_sink(&intel_dp->aux);
continue;
+ }

if (status & DP_AUX_CH_CTL_RECEIVE_ERROR) {
usleep_range(400, 500);

--
2.25.1