media: s5p-mfc: Set context for valid case before calling try_run
authorAakarsh Jain <aakarsh.jain@samsung.com>
Wed, 13 Dec 2023 08:11:03 +0000 (13:41 +0530)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 13 Dec 2023 13:33:49 +0000 (14:33 +0100)
Context bit is set for hardware execution if there is a buffer in
source and destination queue before calling try_run in the
init_buffers function. Now there will be a new context created and
hardware will be invoked for the buffer queued instead of waiting for
another buffer to be queued from userspace to set this context bit for
hw execution.

Cc: linux-fsd@tesla.com
Signed-off-by: Smitha T Murthy <smithatmurthy@gmail.com>
Signed-off-by: Aakarsh Jain <aakarsh.jain@samsung.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c

index bd055dea827e9f939e6f09d6a6d0b2d9d790334a..fbb047eadf5afffe4c8db70660a6fc630dc56d57 100644 (file)
@@ -604,6 +604,8 @@ static void s5p_mfc_handle_init_buffers(struct s5p_mfc_ctx *ctx,
                s5p_mfc_clock_off();
 
                wake_up(&ctx->queue);
+               if (ctx->src_queue_cnt >= 1 && ctx->dst_queue_cnt >= 1)
+                       set_work_bit_irqsave(ctx);
                s5p_mfc_hw_call(dev->mfc_ops, try_run, dev);
        } else {
                WARN_ON(test_and_clear_bit(0, &dev->hw_lock) == 0);