[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2e6f9673e92a12a2abecd2b075bb325882490895.camel@mediatek.com>
Date: Tue, 18 Jul 2023 08:02:43 +0000
From: CK Hu (胡俊光) <ck.hu@...iatek.com>
To: "angelogioacchino.delregno@...labora.com"
<angelogioacchino.delregno@...labora.com>,
"chunkuang.hu@...nel.org" <chunkuang.hu@...nel.org>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-mediatek@...ts.infradead.org"
<linux-mediatek@...ts.infradead.org>,
"wenst@...omium.org" <wenst@...omium.org>,
"kernel@...labora.com" <kernel@...labora.com>,
"dri-devel@...ts.freedesktop.org" <dri-devel@...ts.freedesktop.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"matthias.bgg@...il.com" <matthias.bgg@...il.com>,
"nfraprado@...labora.com" <nfraprado@...labora.com>
Subject: Re: [PATCH v6 01/11] drm/mediatek: dp: Add missing error checks in
mtk_dp_parse_capabilities
Hi, Angelo:
On Mon, 2023-07-17 at 16:14 +0200, AngeloGioacchino Del Regno wrote:
>
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> If reading the RX capabilities fails the training pattern will be
> set
> wrongly: add error checking for drm_dp_read_dpcd_caps() and return if
> anything went wrong with it.
>
> While at it, also add a less critical error check when writing to
> clear the ESI0 IRQ vector.
Reviwed-by: CK Hu <ck.hu@...iatek.com>
>
> Fixes: f70ac097a2cf ("drm/mediatek: Add MT8195 Embedded DisplayPort
> driver")
> Signed-off-by: AngeloGioacchino Del Regno <
> angelogioacchino.delregno@...labora.com>
> ---
> drivers/gpu/drm/mediatek/mtk_dp.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c
> b/drivers/gpu/drm/mediatek/mtk_dp.c
> index 64eee77452c0..c58b775877a3 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dp.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dp.c
> @@ -1588,7 +1588,9 @@ static int mtk_dp_parse_capabilities(struct
> mtk_dp *mtk_dp)
> u8 val;
> ssize_t ret;
>
> - drm_dp_read_dpcd_caps(&mtk_dp->aux, mtk_dp->rx_cap);
> + ret = drm_dp_read_dpcd_caps(&mtk_dp->aux, mtk_dp->rx_cap);
> + if (ret < 0)
> + return ret;
>
> if (drm_dp_tps4_supported(mtk_dp->rx_cap))
> mtk_dp->train_info.channel_eq_pattern =
> DP_TRAINING_PATTERN_4;
> @@ -1615,10 +1617,13 @@ static int mtk_dp_parse_capabilities(struct
> mtk_dp *mtk_dp)
> return ret == 0 ? -EIO : ret;
> }
>
> - if (val)
> - drm_dp_dpcd_writeb(&mtk_dp->aux,
> - DP_DEVICE_SERVICE_IRQ_VECTOR
> _ESI0,
> - val);
> + if (val) {
> + ret = drm_dp_dpcd_writeb(&mtk_dp->aux,
> + DP_DEVICE_SERVICE_IRQ_
> VECTOR_ESI0,
> + val);
> + if (ret < 0)
> + return ret;
> + }
> }
>
> return 0;
> --
> 2.40.1
Powered by blists - more mailing lists