From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Fei Shao <fshao@chromium.org>
Cc: chunkuang.hu@kernel.org, p.zabel@pengutronix.de,
airlied@gmail.com, daniel@ffwll.ch, matthias.bgg@gmail.com,
dri-devel@lists.freedesktop.org,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kernel@collabora.com
Subject: Re: [PATCH v2 2/4] drm/mediatek: dsi: Cleanup functions mtk_dsi_ps_control{_vact}()
Date: Wed, 31 Jan 2024 11:57:04 +0100 [thread overview]
Message-ID: <2e797f80-2e77-4199-beb4-c91a0be11bb5@collabora.com> (raw)
In-Reply-To: <CAC=S1nhNfyEWKaJZjb_G-pXpxSpXvNQd2EMJUzWWwxmC+TzSaA@mail.gmail.com>
Il 26/12/23 11:48, Fei Shao ha scritto:
> Hi Angelo,
>
> On Wed, Dec 20, 2023 at 9:57 PM AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Function mtk_dsi_ps_control() is a subset of mtk_dsi_ps_control_vact():
>> merge the two in one mtk_dsi_ps_control() function by adding one
>> function parameter `config_vact` which, when true, writes the VACT
>> related registers.
>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
>> drivers/gpu/drm/mediatek/mtk_dsi.c | 76 +++++++++---------------------
>> 1 file changed, 23 insertions(+), 53 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
>> index 23d2c5be8dbb..b618e2e31022 100644
>> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
>> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
>> @@ -352,40 +352,6 @@ static void mtk_dsi_set_vm_cmd(struct mtk_dsi *dsi)
>> mtk_dsi_mask(dsi, DSI_VM_CMD_CON, TS_VFP_EN, TS_VFP_EN);
>> }
>>
>> -static void mtk_dsi_ps_control_vact(struct mtk_dsi *dsi)
>> -{
>> - struct videomode *vm = &dsi->vm;
>> - u32 dsi_buf_bpp, ps_wc;
>> - u32 ps_bpp_mode;
>> -
>> - if (dsi->format == MIPI_DSI_FMT_RGB565)
>> - dsi_buf_bpp = 2;
>> - else
>> - dsi_buf_bpp = 3;
>> -
>> - ps_wc = vm->hactive * dsi_buf_bpp;
>> - ps_bpp_mode = ps_wc;
>> -
>> - switch (dsi->format) {
>> - case MIPI_DSI_FMT_RGB888:
>> - ps_bpp_mode |= PACKED_PS_24BIT_RGB888;
>> - break;
>> - case MIPI_DSI_FMT_RGB666:
>> - ps_bpp_mode |= PACKED_PS_18BIT_RGB666;
>> - break;
>> - case MIPI_DSI_FMT_RGB666_PACKED:
>> - ps_bpp_mode |= LOOSELY_PS_18BIT_RGB666;
>> - break;
>> - case MIPI_DSI_FMT_RGB565:
>> - ps_bpp_mode |= PACKED_PS_16BIT_RGB565;
>> - break;
>> - }
>> -
>> - writel(vm->vactive, dsi->regs + DSI_VACT_NL);
>> - writel(ps_bpp_mode, dsi->regs + DSI_PSCTRL);
>> - writel(ps_wc, dsi->regs + DSI_HSTX_CKL_WC);
>> -}
>> -
>> static void mtk_dsi_rxtx_control(struct mtk_dsi *dsi)
>> {
>> u32 tmp_reg;
>> @@ -417,36 +383,40 @@ static void mtk_dsi_rxtx_control(struct mtk_dsi *dsi)
>> writel(tmp_reg, dsi->regs + DSI_TXRX_CTRL);
>> }
>>
>> -static void mtk_dsi_ps_control(struct mtk_dsi *dsi)
>> +static void mtk_dsi_ps_control(struct mtk_dsi *dsi, bool config_vact)
>> {
>> - u32 dsi_tmp_buf_bpp;
>> - u32 tmp_reg;
>> + struct videomode *vm = &dsi->vm;
>> + u32 dsi_buf_bpp, ps_wc;
>> + u32 ps_bpp_mode;
>> +
>> + if (dsi->format == MIPI_DSI_FMT_RGB565)
>> + dsi_buf_bpp = 2;
>> + else
>> + dsi_buf_bpp = 3;
>
> The same is also in mtk_dsi_config_vdo_timing(). Given this is a
> cleanup series, I think it'd be a good chance to add another patch
> and integrate those usages. Just a thought. :)
Checking that right now.
>>
>> +
>> + ps_wc = vm->hactive * dsi_buf_bpp;
>
> I noticed the "& DSI_PS_WC" part was dropped (but perhaps with awareness?).
>
> While the outcome seems to always fall within the range of
> DSI_PS_WC so we should be fine in practice, I think it doesn't hurt to
> keep the value masked to save readers some time to check if this would
> ever be possible to overflow and write undesired bits down the line.
> WDYT?
>
Masking a pre-masked value doesn't look right.
Besides, as for the concern of overflowing, if we masked that we'd still end up
with broken functionality, as if the value is invalid... well, it's invalid.
Masked or not. :-)
Thanks for the R-b, sending a v3 soon with some fixes.
Regards,
Angelo
> Regardless of that, I didn't find obvious issue in this patch, so
>
> Reviewed-by: Fei Shao <fshao@chromium.org>
>
> Regards,
> Fei
>
>
>
>
>>
>> + ps_bpp_mode = ps_wc;
>>
>> switch (dsi->format) {
>> case MIPI_DSI_FMT_RGB888:
>> - tmp_reg = PACKED_PS_24BIT_RGB888;
>> - dsi_tmp_buf_bpp = 3;
>> + ps_bpp_mode |= PACKED_PS_24BIT_RGB888;
>> break;
>> case MIPI_DSI_FMT_RGB666:
>> - tmp_reg = LOOSELY_PS_18BIT_RGB666;
>> - dsi_tmp_buf_bpp = 3;
>> + ps_bpp_mode |= PACKED_PS_18BIT_RGB666;
>> break;
>> case MIPI_DSI_FMT_RGB666_PACKED:
>> - tmp_reg = PACKED_PS_18BIT_RGB666;
>> - dsi_tmp_buf_bpp = 3;
>> + ps_bpp_mode |= LOOSELY_PS_18BIT_RGB666;
>> break;
>> case MIPI_DSI_FMT_RGB565:
>> - tmp_reg = PACKED_PS_16BIT_RGB565;
>> - dsi_tmp_buf_bpp = 2;
>> - break;
>> - default:
>>
>> - tmp_reg = PACKED_PS_24BIT_RGB888;
>> - dsi_tmp_buf_bpp = 3;
>> + ps_bpp_mode |= PACKED_PS_16BIT_RGB565;
>> break;
>> }
>>
>> - tmp_reg += dsi->vm.hactive * dsi_tmp_buf_bpp & DSI_PS_WC;
>>
>> - writel(tmp_reg, dsi->regs + DSI_PSCTRL);
>> + if (config_vact) {
>> + writel(vm->vactive, dsi->regs + DSI_VACT_NL);
>> + writel(ps_wc, dsi->regs + DSI_HSTX_CKL_WC);
>> + }
>> + writel(ps_bpp_mode, dsi->regs + DSI_PSCTRL);
>> }
>>
>> static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
>> @@ -522,7 +492,7 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
>> writel(horizontal_backporch_byte, dsi->regs + DSI_HBP_WC);
>> writel(horizontal_frontporch_byte, dsi->regs + DSI_HFP_WC);
>>
>> - mtk_dsi_ps_control(dsi);
>> + mtk_dsi_ps_control(dsi, false);
>> }
>>
>> static void mtk_dsi_start(struct mtk_dsi *dsi)
>> @@ -667,7 +637,7 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
>> mtk_dsi_reset_engine(dsi);
>> mtk_dsi_phy_timconfig(dsi);
>>
>> - mtk_dsi_ps_control_vact(dsi);
>> + mtk_dsi_ps_control(dsi, true);
>> mtk_dsi_set_vm_cmd(dsi);
>> mtk_dsi_config_vdo_timing(dsi);
>> mtk_dsi_set_interrupt_enable(dsi);
>> --
>> 2.43.0
>>
>>
next prev parent reply other threads:[~2024-01-31 10:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-20 13:57 [PATCH v2 0/4] MediaTek DRM - DSI driver cleanups AngeloGioacchino Del Regno
2023-12-20 13:57 ` [PATCH v2 1/4] drm/mediatek: dsi: Use GENMASK() for register mask definitions AngeloGioacchino Del Regno
2023-12-26 10:46 ` Fei Shao
2024-01-31 10:56 ` AngeloGioacchino Del Regno
2023-12-20 13:57 ` [PATCH v2 2/4] drm/mediatek: dsi: Cleanup functions mtk_dsi_ps_control{_vact}() AngeloGioacchino Del Regno
2023-12-26 10:48 ` Fei Shao
2024-01-31 10:57 ` AngeloGioacchino Del Regno [this message]
2023-12-20 13:57 ` [PATCH v2 3/4] drm/mediatek: dsi: Use bitfield macros where useful AngeloGioacchino Del Regno
2023-12-23 7:36 ` kernel test robot
2023-12-20 13:57 ` [PATCH v2 4/4] drm/mediatek: dsi: Replace open-coded instance of HZ_PER_MHZ AngeloGioacchino Del Regno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2e797f80-2e77-4199-beb4-c91a0be11bb5@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=airlied@gmail.com \
--cc=chunkuang.hu@kernel.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=fshao@chromium.org \
--cc=kernel@collabora.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=p.zabel@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®