Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <Wesley.Chalmers@amd.com>
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Anson Jacob <Anson.Jacob@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Wesley Chalmers and committed by
Alex Deucher
95ad72f4 1d5b15f7

+2 -1
+2 -1
drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
··· 667 667 case AUX_TRANSACTION_REPLY_AUX_DEFER: 668 668 /* polling_timeout_period is in us */ 669 669 defer_time_in_ms += aux110->polling_timeout_period / 1000; 670 + ++aux_defer_retries; 670 671 /* fall through */ 671 672 case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER: 672 673 retry_on_defer = true; 673 674 fallthrough; 674 675 case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_NACK: 675 - if (++aux_defer_retries >= AUX_MIN_DEFER_RETRIES 676 + if (aux_defer_retries >= AUX_MIN_DEFER_RETRIES 676 677 && defer_time_in_ms >= AUX_MAX_DEFER_TIMEOUT_MS) { 677 678 goto fail; 678 679 } else {