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

CK Hu (胡俊光) ck.hu at mediatek.com
Tue Jun 11 18:22:23 PDT 2024


Hi, Shawn:

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

[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);
> +	}
> +}
> +


More information about the Linux-mediatek mailing list