media: staging: rkisp1: cap: don't set next buffer from rkisp1_vb2_buf_queue
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Tue, 14 Jul 2020 12:38:29 +0000 (14:38 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sun, 19 Jul 2020 12:04:14 +0000 (14:04 +0200)
commitaa86e0bbf2ee3fe338798af78f02b5e6088b50c1
treebf208671e4ffa8e4335c6ad6642c24f9550da29e
parent2cc6a9fea031ec8cbd897e5967f6a84df3c9aae3
media: staging: rkisp1: cap: don't set next buffer from rkisp1_vb2_buf_queue

The function 'rkisp1_vb2_buf_queue' sets the next buffer directly
in case the capture is already streaming but no frame yet arrived
from the sensor. This is an optimization that tries to avoid
dropping a frame.
The call atomic_read(&cap->rkisp1->isp.frame_sequence) is used
to check if a frame arrived. Reading the 'frame_sequence' should
be avoided outside irq handlers to avoid race conditions.

This patch removes this optimization. Dropping of the first
frames can be avoided if userspace queues the buffers before
start streaming. If userspace starts queueing buffers
only after calling 'streamon' he risks frame drops anyway.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/rkisp1/rkisp1-capture.c