[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