aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-11-25 22:13:09 -0500
committerDave Airlie <airlied@redhat.com>2014-12-08 18:56:44 -0500
commit19a93f042fc241ecdf98543cedfe7c171f8cdf53 (patch)
treefac76347b71c78a2871ae16a72f1484ed9075a62
parentb75478d1c7e4758abcf15c8494d70d4dc4dcb553 (diff)
drm/dp: retry AUX transactions 32 times (v1.1)
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: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/drm_dp_helper.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 959e2074b0d4..79968e39c8d0 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -186,10 +186,11 @@ static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request,
186 186
187 /* 187 /*
188 * The specification doesn't give any recommendation on how often to 188 * The specification doesn't give any recommendation on how often to
189 * retry native transactions, so retry 7 times like for I2C-over-AUX 189 * retry native transactions. We used to retry 7 times like for
190 * transactions. 190 * aux i2c transactions but real world devices this wasn't
191 * sufficient, bump to 32 which makes Dell 4k monitors happier.
191 */ 192 */
192 for (retry = 0; retry < 7; retry++) { 193 for (retry = 0; retry < 32; retry++) {
193 194
194 mutex_lock(&aux->hw_mutex); 195 mutex_lock(&aux->hw_mutex);
195 err = aux->transfer(aux, &msg); 196 err = aux->transfer(aux, &msg);