[PATCH 5/6] media: mediatek: vcodec: move core context from device to each instance
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Mon Apr 17 02:35:34 PDT 2023
Il 17/04/23 07:48, Yunfei Dong ha scritto:
> There are so many lat buffer in core context list, some instances
> maybe be scheduled for a very long time. Moving the core context to
> each instance, it only be used to control lat buffer of each instance.
> And the core work queue of each instance is scheduled by system.
>
> Fixes: 2cfca6c1bf80 ("media: mediatek: vcodec: move lat_buf to the top of core list")
> Signed-off-by: Yunfei Dong <yunfei.dong at mediatek.com>
> ---
> .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 1 -
> .../platform/mediatek/vcodec/mtk_vcodec_drv.h | 2 -
> .../vcodec/vdec/vdec_h264_req_multi_if.c | 4 +-
> .../vcodec/vdec/vdec_vp9_req_lat_if.c | 2 +-
> .../platform/mediatek/vcodec/vdec_msg_queue.c | 53 +++++++------------
> .../platform/mediatek/vcodec/vdec_msg_queue.h | 6 ++-
> 6 files changed, 25 insertions(+), 43 deletions(-)
>
..snip..
> diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h
> index a80b9853cec9..ae37d020a1bd 100644
> --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h
> +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h
> @@ -83,10 +83,11 @@ struct vdec_lat_buf {
> * @wdma_wptr_addr: ube write point
> * @core_work: core hardware work
> * @lat_ctx: used to store lat buffer list
> - * @ctx: point to mtk_vcodec_ctx
> + * @core_ctx: used to store core buffer list
> *
> * @lat_list_cnt: used to record each instance lat list count
> * @core_list_cnt: used to record each instance core list count
> + * @flush_done: core flush done status
> * @empty_lat_buf: the last lat buf used to flush decode
> * @core_dec_done: core work queue decode done event
> * @status: current context decode status for core hardware
> @@ -100,10 +101,11 @@ struct vdec_msg_queue {
>
> struct work_struct core_work;
> struct vdec_msg_queue_ctx lat_ctx;
> - struct mtk_vcodec_ctx *ctx;
> + struct vdec_msg_queue_ctx core_ctx;
>
> atomic_t lat_list_cnt;
> atomic_t core_list_cnt;
> + bool flush_done;
flush_done is used in patch [6/6]: this does not belong to this patch,
please move the addition of this member in the same patch where you use it.
Regards,
Angelo
More information about the Linux-mediatek
mailing list