[PATCH v15 07/11] drm/mediatek: Add retry to prevent misjudgment for sink devices
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Wed Jul 27 02:40:44 PDT 2022
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 at mediatek.com>
> ---
> 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 at collabora.com>
> +
> + if (!max_retry)
> + return -ETIMEDOUT;
>
> ret = mtk_dp_video_config(mtk_dp);
> if (ret)
More information about the Linux-mediatek
mailing list