media: mtk-jpeg: Fixes jpeg enc&dec worker sw flow
1. Move removing buffer after sw setting and before hw setting in enc&dec worker to prevents the operation of removing the buffer twice if the sw setting fails. 2. Remove the redundant operation of queue work in the jpegenc irq handler because the jpegenc worker has called v4l2_m2m_job_finish to do it. Fixes:5fb1c2361e
("mtk-jpegenc: add jpeg encode worker interface") Fixes:dedc215003
("media: mtk-jpegdec: add jpeg decode worker interface") Signed-off-by: kyrie wu <kyrie.wu@mediatek.com> Signed-off-by: irui wang <irui.wang@mediatek.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
9ceca28e4f
commit
86379bd9d3
|
@ -1025,9 +1025,6 @@ retry_select:
|
|||
if (!dst_buf)
|
||||
goto getbuf_fail;
|
||||
|
||||
v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
||||
v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
|
||||
|
||||
v4l2_m2m_buf_copy_metadata(src_buf, dst_buf, true);
|
||||
|
||||
mtk_jpegenc_set_hw_param(ctx, hw_id, src_buf, dst_buf);
|
||||
|
@ -1045,6 +1042,9 @@ retry_select:
|
|||
goto enc_end;
|
||||
}
|
||||
|
||||
v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
||||
v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
|
||||
|
||||
schedule_delayed_work(&comp_jpeg[hw_id]->job_timeout_work,
|
||||
msecs_to_jiffies(MTK_JPEG_HW_TIMEOUT_MSEC));
|
||||
|
||||
|
@ -1220,9 +1220,6 @@ retry_select:
|
|||
if (!dst_buf)
|
||||
goto getbuf_fail;
|
||||
|
||||
v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
||||
v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
|
||||
|
||||
v4l2_m2m_buf_copy_metadata(src_buf, dst_buf, true);
|
||||
jpeg_src_buf = mtk_jpeg_vb2_to_srcbuf(&src_buf->vb2_buf);
|
||||
jpeg_dst_buf = mtk_jpeg_vb2_to_srcbuf(&dst_buf->vb2_buf);
|
||||
|
@ -1231,7 +1228,7 @@ retry_select:
|
|||
&jpeg_src_buf->dec_param)) {
|
||||
mtk_jpeg_queue_src_chg_event(ctx);
|
||||
ctx->state = MTK_JPEG_SOURCE_CHANGE;
|
||||
goto dec_end;
|
||||
goto getbuf_fail;
|
||||
}
|
||||
|
||||
jpeg_src_buf->curr_ctx = ctx;
|
||||
|
@ -1254,6 +1251,9 @@ retry_select:
|
|||
goto clk_end;
|
||||
}
|
||||
|
||||
v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
||||
v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
|
||||
|
||||
schedule_delayed_work(&comp_jpeg[hw_id]->job_timeout_work,
|
||||
msecs_to_jiffies(MTK_JPEG_HW_TIMEOUT_MSEC));
|
||||
|
||||
|
|
|
@ -286,10 +286,6 @@ static irqreturn_t mtk_jpegenc_hw_irq_handler(int irq, void *priv)
|
|||
mtk_jpegenc_put_buf(jpeg);
|
||||
pm_runtime_put(ctx->jpeg->dev);
|
||||
clk_disable_unprepare(jpeg->venc_clk.clks->clk);
|
||||
if (!list_empty(&ctx->fh.m2m_ctx->out_q_ctx.rdy_queue) ||
|
||||
!list_empty(&ctx->fh.m2m_ctx->cap_q_ctx.rdy_queue)) {
|
||||
queue_work(master_jpeg->workqueue, &ctx->jpeg_work);
|
||||
}
|
||||
|
||||
jpeg->hw_state = MTK_JPEG_HW_IDLE;
|
||||
wake_up(&master_jpeg->enc_hw_wq);
|
||||
|
|
Loading…
Reference in New Issue