summaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/rkisp1/rkisp1-params.c
diff options
context:
space:
mode:
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>2020-09-22 13:33:55 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-09-27 11:33:31 +0200
commit5f1d4b076828d803c9e7dd536e0f4a8e1b1f6938 (patch)
tree2f2c94af5ba7657a7362bcc78c1cc59ced367b29 /drivers/staging/media/rkisp1/rkisp1-params.c
parent98c437e3b960a2c27c892157ba088e17276d471a (diff)
downloadlinux-5f1d4b076828d803c9e7dd536e0f4a8e1b1f6938.tar.bz2
media: staging: rkisp1: params: set vb.sequence to be the isp's frame_sequence + 1
The params isr is called when the ISP finishes processing a frame (RKISP1_CIF_ISP_FRAME). Configurations performed in the params isr will be applied on the next frame. Since frame_sequence is updated on the vertical sync signal, we should use frame_sequence + 1 as the vb.sequence of the params buffer to indicate to userspace on which frame these parameters are being applied. 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>
Diffstat (limited to 'drivers/staging/media/rkisp1/rkisp1-params.c')
-rw-r--r--drivers/staging/media/rkisp1/rkisp1-params.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/staging/media/rkisp1/rkisp1-params.c b/drivers/staging/media/rkisp1/rkisp1-params.c
index e8049a50575f..24a49368df22 100644
--- a/drivers/staging/media/rkisp1/rkisp1-params.c
+++ b/drivers/staging/media/rkisp1/rkisp1-params.c
@@ -1213,7 +1213,14 @@ static void rkisp1_params_apply_params_cfg(struct rkisp1_params *params,
void rkisp1_params_isr(struct rkisp1_device *rkisp1)
{
- unsigned int frame_sequence = atomic_read(&rkisp1->isp.frame_sequence);
+ /*
+ * This isr is called when the ISR finishes processing a frame (RKISP1_CIF_ISP_FRAME).
+ * Configurations performed here will be applied on the next frame.
+ * Since frame_sequence is updated on the vertical sync signal, we should use
+ * frame_sequence + 1 here to indicate to userspace on which frame these parameters
+ * are being applied.
+ */
+ unsigned int frame_sequence = atomic_read(&rkisp1->isp.frame_sequence) + 1;
struct rkisp1_params *params = &rkisp1->params;
spin_lock(&params->config_lock);