media: rkisp1: cap: initialize dma buf address in 'buf_init' cb
Initializing the dma addresses of the capture buffers can move to the 'buf_init' callback, since it is enough to do it once for each buffer and not every time it is queued. Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Родитель
07e59d91e7
Коммит
f003d635a8
|
@ -750,7 +750,7 @@ static int rkisp1_vb2_queue_setup(struct vb2_queue *queue,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
|
||||
static int rkisp1_vb2_buf_init(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
|
||||
struct rkisp1_buffer *ispbuf =
|
||||
|
@ -780,6 +780,15 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
|
|||
if (cap->pix.info->comp_planes == 3 && cap->pix.cfg->uv_swap)
|
||||
swap(ispbuf->buff_addr[RKISP1_PLANE_CR],
|
||||
ispbuf->buff_addr[RKISP1_PLANE_CB]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
|
||||
struct rkisp1_buffer *ispbuf =
|
||||
container_of(vbuf, struct rkisp1_buffer, vb);
|
||||
struct rkisp1_capture *cap = vb->vb2_queue->drv_priv;
|
||||
|
||||
spin_lock_irq(&cap->buf.lock);
|
||||
list_add_tail(&ispbuf->queue, &cap->buf.queue);
|
||||
|
@ -1039,6 +1048,7 @@ err_ret_buffers:
|
|||
|
||||
static const struct vb2_ops rkisp1_vb2_ops = {
|
||||
.queue_setup = rkisp1_vb2_queue_setup,
|
||||
.buf_init = rkisp1_vb2_buf_init,
|
||||
.buf_queue = rkisp1_vb2_buf_queue,
|
||||
.buf_prepare = rkisp1_vb2_buf_prepare,
|
||||
.wait_prepare = vb2_ops_wait_prepare,
|
||||
|
|
Загрузка…
Ссылка в новой задаче