media: meson: vdec: Stop direct calls to queue num_buffers field
authorBenjamin Gaignard <benjamin.gaignard@collabora.com>
Thu, 9 Nov 2023 16:34:48 +0000 (17:34 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Thu, 23 Nov 2023 11:32:37 +0000 (12:32 +0100)
Use vb2_get_num_buffers() to avoid using queue num_buffers field directly.
This allows us to change how the number of buffers is computed in the
future.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
CC: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/meson/vdec/vdec.c

index 219185aaa588a4e60f8b6d99a5bd6a178f5f66c0..1e2369f104c8860031a8c79f77d8ae84c2912f8c 100644 (file)
@@ -167,22 +167,23 @@ static void process_num_buffers(struct vb2_queue *q,
                                bool is_reqbufs)
 {
        const struct amvdec_format *fmt_out = sess->fmt_out;
-       unsigned int buffers_total = q->num_buffers + *num_buffers;
+       unsigned int q_num_bufs = vb2_get_num_buffers(q);
+       unsigned int buffers_total = q_num_bufs + *num_buffers;
        u32 min_buf_capture = v4l2_ctrl_g_ctrl(sess->ctrl_min_buf_capture);
 
-       if (q->num_buffers + *num_buffers < min_buf_capture)
-               *num_buffers = min_buf_capture - q->num_buffers;
+       if (q_num_bufs + *num_buffers < min_buf_capture)
+               *num_buffers = min_buf_capture - q_num_bufs;
        if (is_reqbufs && buffers_total < fmt_out->min_buffers)
-               *num_buffers = fmt_out->min_buffers - q->num_buffers;
+               *num_buffers = fmt_out->min_buffers - q_num_bufs;
        if (buffers_total > fmt_out->max_buffers)
-               *num_buffers = fmt_out->max_buffers - q->num_buffers;
+               *num_buffers = fmt_out->max_buffers - q_num_bufs;
 
        /* We need to program the complete CAPTURE buffer list
         * in registers during start_streaming, and the firmwares
         * are free to choose any of them to write frames to. As such,
         * we need all of them to be queued into the driver
         */
-       sess->num_dst_bufs = q->num_buffers + *num_buffers;
+       sess->num_dst_bufs = q_num_bufs + *num_buffers;
        q->min_buffers_needed = max(fmt_out->min_buffers, sess->num_dst_bufs);
 }