Commit 1cc3d117 authored by Dave Airlie's avatar Dave Airlie Committed by Luis Henriques

drm/dp: retry AUX transactions 32 times (v1.1)

commit 19a93f04 upstream.

At least on two MST devices I've tested with, when
they are link training downstream, they are totally
unable to handle aux ch msgs, so they defer like nuts.
I tried 16, it wasn't enough, 32 seems better.

This fixes one Dell 4k monitor and one of the
MST hubs.

v1.1: fixup comment (Tom).
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent cbb55ed0
...@@ -378,10 +378,11 @@ static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request, ...@@ -378,10 +378,11 @@ static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request,
/* /*
* The specification doesn't give any recommendation on how often to * The specification doesn't give any recommendation on how often to
* retry native transactions, so retry 7 times like for I2C-over-AUX * retry native transactions. We used to retry 7 times like for
* transactions. * aux i2c transactions but real world devices this wasn't
* sufficient, bump to 32 which makes Dell 4k monitors happier.
*/ */
for (retry = 0; retry < 7; retry++) { for (retry = 0; retry < 32; retry++) {
mutex_lock(&aux->hw_mutex); mutex_lock(&aux->hw_mutex);
err = aux->transfer(aux, &msg); err = aux->transfer(aux, &msg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment