Re: [PATCH v8 14/16] drm/mediatek: Support CRC in display driver

From: CK Hu (胡俊光)
Date: Tue Jun 11 2024 - 21:23:24 EST


Hi, Shawn:

On Thu, 2024-06-06 at 17:26 +0800, Shawn Sung wrote:
> From: Hsiao Chien Sung <shawn.sung@xxxxxxxxxxxx>
>
> Register CRC related function pointers to support
> CRC retrieval.
>
> Signed-off-by: Hsiao Chien Sung <shawn.sung@xxxxxxxxxxxx>
> ---

[snip]

>
> +static void mtk_crtc_crc_work(struct kthread_work *base)
> +{
> + struct drm_vblank_work *work = to_drm_vblank_work(base);
> + struct mtk_crtc *mtk_crtc =
> + container_of(work, typeof(*mtk_crtc), crc_work);
> + struct mtk_ddp_comp *comp = mtk_crtc->crc_provider;
> +
> + if (!comp) {
> + DRM_WARN("%s(crtc-%d): no crc provider\n",
> + __func__, drm_crtc_index(&mtk_crtc->base));
> + return;
> + }
> +
> + if (mtk_crtc->base.crc.opened) {
> + u64 vblank = drm_crtc_vblank_count(&mtk_crtc->base);
> +
> + comp->funcs->crc_read(comp->dev);
> +
> + /* could take more than 50ms to finish */
> + drm_crtc_add_crc_entry(&mtk_crtc->base, true, vblank,
> + comp->funcs->crc_entry(comp->dev));

It seems that you could regenerate cmdq packet for crc here. So crtc
atomic flush and crc could use the same mailbox channel.

Regards,
CK

> +
> + drm_vblank_work_schedule(&mtk_crtc->crc_work, vblank + 1, true);
> + } else {
> + comp->funcs->crc_stop(comp->dev);
> + }
> +}
> +