]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/commitdiff
media:platform:tegra Stop duplicate singleshot
authorIan Kaszubski <ikaszubski@nvidia.com>
Thu, 15 Jun 2017 22:43:38 +0000 (15:43 -0700)
committermobile promotions <svcmobile_promotions@nvidia.com>
Sat, 17 Jun 2017 01:30:10 +0000 (18:30 -0700)
Issue: When a capture session is complete an extra singleshot is
sometimes issued causing syncpt timeouts in subsequent sessions.

Fix: When a capture is complete do not issue a single shot if there
is already an active one.

Bug 200291915

Change-Id: I0616978b2144a0539980087fd356d8c30299bcd0
Signed-off-by: Ian Kaszubski <ikaszubski@nvidia.com>
Reviewed-on: http://git-master/r/1503374
GVS: Gerrit_Virtual_Submit
Reviewed-by: Jaspreet Kaur <jkaur@nvidia.com>
Reviewed-by: Bhanu Murthy V <bmurthyv@nvidia.com>
Reviewed-by: Jihoon Bang <jbang@nvidia.com>
drivers/media/platform/tegra/camera/vi/vi2_fops.c

index 8008c1991e9a745447cb6ae08a05f66c4f0812c4..9ef56fb7714326bd0468821de1ba46a2b195121e 100644 (file)
@@ -443,8 +443,13 @@ static void tegra_channel_capture_done(struct tegra_channel *chan)
                val = VI_CFG_VI_INCR_SYNCPT_COND(mw_ack_done) |
                                chan->syncpt[index][0];
                tegra_channel_write(chan, TEGRA_VI_CFG_VI_INCR_SYNCPT, val);
-               csi_write(chan, index,
-                       TEGRA_VI_CSI_SINGLE_SHOT, SINGLE_SHOT_CAPTURE);
+               if (!csi_read(chan, index, TEGRA_VI_CSI_SINGLE_SHOT)) {
+                       csi_write(chan, index,
+                               TEGRA_VI_CSI_SINGLE_SHOT, SINGLE_SHOT_CAPTURE);
+               } else {
+                       dev_dbg(&chan->video.dev,
+                               "Syncpoint already enabled at capture done!%d\n", index);
+               }
        }
 
        for (index = 0; index < chan->valid_ports; index++) {