Il 27/07/22 06:50, Bo-Chen Chen ha scritto:
For some DP dungles, we need to train more than onece to confirm that we
don't misjudge the status of sink device.
Please fix the typos in your commit title and description.
title: misjudgment -> misjudgement
desc: dungles->dongles; onece->once
Signed-off-by: Bo-Chen Chen <rex-bc.chen@xxxxxxxxxxxx>
---
drivers/gpu/drm/mediatek/mtk_dp.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index ce817cb59445..80d7d6488105 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -42,6 +42,7 @@
#define MTK_DP_CHECK_SINK_CAP_TIMEOUT_COUNT 3
#define MTK_DP_TBC_BUF_READ_START_ADDR 0x08
#define MTK_DP_TRAIN_DOWNSCALE_RETRY 8
+#define MTK_DP_TRAIN_CLEAR_RETRY 50
struct mtk_dp_train_info {
bool tps3;
@@ -1431,11 +1432,25 @@ static int mtk_dp_video_config(struct mtk_dp *mtk_dp)
static int mtk_dp_training(struct mtk_dp *mtk_dp)
{
+ short max_retry = MTK_DP_TRAIN_CLEAR_RETRY;
int ret;
- ret = mtk_dp_train_start(mtk_dp);
- if (ret)
- return ret;
+ /*
+ * We do retry to confirm that we don't misjudge the sink status.
+ * If it is still failed, we can confirm there are some issues for the
+ * sink device.
+ */
+ do {
+ ret = mtk_dp_train_start(mtk_dp);
+ if (!ret)
+ break;
+ } while (--max_retry);
+
+ dev_info(mtk_dp->dev, "dp training clear retry times: %d\n",
+ MTK_DP_TRAIN_CLEAR_RETRY - max_retry);
dev_dbg() here.
...after which,
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
+
+ if (!max_retry)
+ return -ETIMEDOUT;
ret = mtk_dp_video_config(mtk_dp);
if (ret)