From: Wesley Chalmers Date: Mon, 29 Mar 2021 17:36:35 +0000 (-0400) Subject: drm/amd/display: Do not count I2C DEFERs with AUX DEFERs X-Git-Tag: v5.14-rc1~114^2~7^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95ad72f4ade3db645279dae3bf4ed456ac806a1c;p=thirdparty%2Fkernel%2Flinux.git drm/amd/display: Do not count I2C DEFERs with AUX DEFERs [WHY] DP 2.0 SCR specifies that "A DPTX shall distinguish I2C_DEFER|AUX_ACK from AUX_DEFER. AUX retries due to I2C_DEFER are not counted as part of minimum 7 retires (sic) upon AUX_DEFER’s" Signed-off-by: Wesley Chalmers Reviewed-by: Jun Lei Acked-by: Anson Jacob Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c index 49cb4e6d64115..28631714f6978 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c @@ -667,12 +667,13 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc, case AUX_TRANSACTION_REPLY_AUX_DEFER: /* polling_timeout_period is in us */ defer_time_in_ms += aux110->polling_timeout_period / 1000; + ++aux_defer_retries; /* fall through */ case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER: retry_on_defer = true; fallthrough; case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_NACK: - if (++aux_defer_retries >= AUX_MIN_DEFER_RETRIES + if (aux_defer_retries >= AUX_MIN_DEFER_RETRIES && defer_time_in_ms >= AUX_MAX_DEFER_TIMEOUT_MS) { goto fail; } else {