[PATCH 30/76] drm/amd/dal: Poll AUX_SW_DONE to 0 before AUX_SW_GO

Harry Wentland harry.wentland at amd.com
Mon Nov 21 23:00:50 UTC 2016


From: Wenjing Liu <Wenjing.Liu at amd.com>

[Description]
There is an intermittent issue where driver fails aux channel error DP
compliance test.
The test will fail to reply aux messages and expect driver to retry.
Driver misinterprets it as an Nack and doesn't retry.
Driver resets AUX_SW_DONE and assumes it will take effect immediately.
In some cases, the AUX_SW_DONE will not be updated
before drivers check if the current transaction is done.
Driver reads the previous set done bit and thinks reply is obtained.

Signed-off-by: Wenjing Liu <Wenjing.Liu at amd.com>
Acked-by: Harry Wentland <harry.wentland at amd.com>
---
 drivers/gpu/drm/amd/dal/dc/i2caux/dce110/aux_engine_dce110.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/dal/dc/i2caux/dce110/aux_engine_dce110.c b/drivers/gpu/drm/amd/dal/dc/i2caux/dce110/aux_engine_dce110.c
index 79d67691ca63..c112bdd5e7ab 100644
--- a/drivers/gpu/drm/amd/dal/dc/i2caux/dce110/aux_engine_dce110.c
+++ b/drivers/gpu/drm/amd/dal/dc/i2caux/dce110/aux_engine_dce110.c
@@ -249,7 +249,8 @@ static void submit_channel_request(
 	}
 
 	REG_UPDATE(AUX_INTERRUPT_CONTROL, AUX_SW_DONE_ACK, 1);
-
+	REG_WAIT(AUX_SW_STATUS, AUX_SW_DONE, 0,
+				10, aux110->timeout_period/10);
 	REG_UPDATE(AUX_SW_CONTROL, AUX_SW_GO, 1);
 }
 
-- 
2.10.1



More information about the amd-gfx mailing list