media: staging: rkisp1: params: set vb.sequence to be the isp's frame_sequence + 1
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Tue, 22 Sep 2020 11:33:55 +0000 (13:33 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sun, 27 Sep 2020 09:33:31 +0000 (11:33 +0200)
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>
drivers/staging/media/rkisp1/rkisp1-params.c

index e8049a50575f30b2b40fe19961b32158101aca35..24a49368df222d018ae6532ebdc94c3179e6f508 100644 (file)
@@ -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);