media: atmel: atmel-isi: fix timeout value for stop streaming
authorAlexandre Kroupski <alexandre.kroupski@ingenico.com>
Tue, 20 Aug 2019 11:37:45 +0000 (08:37 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:51:06 +0000 (14:51 +0100)
[ Upstream commit 623fd246bb40234fe68dd4e7c1f1f081f9c45a3d ]

In case of sensor malfunction, stop streaming timeout takes much longer
than expected. This is due to conversion of time to jiffies: milliseconds
multiplied with HZ (ticks/second) gives out a value of jiffies with 10^3
greater. We need to also divide by 10^3 to obtain the right jiffies value.
In other words FRAME_INTERVAL_MILLI_SEC must be in seconds in order to
multiply by HZ and get the right jiffies value to add to the current
jiffies for the timeout expire time.

Fixes: 195ebc43bf76 ("[media] V4L: at91: add Atmel Image Sensor Interface (ISI) support")
Signed-off-by: Alexandre Kroupski <alexandre.kroupski@ingenico.com>
Reviewed-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/atmel/atmel-isi.c

index e8db4df..1a0e523 100644 (file)
@@ -496,7 +496,7 @@ static void stop_streaming(struct vb2_queue *vq)
        spin_unlock_irq(&isi->irqlock);
 
        if (!isi->enable_preview_path) {
-               timeout = jiffies + FRAME_INTERVAL_MILLI_SEC * HZ;
+               timeout = jiffies + (FRAME_INTERVAL_MILLI_SEC * HZ) / 1000;
                /* Wait until the end of the current frame. */
                while ((isi_readl(isi, ISI_STATUS) & ISI_CTRL_CDC) &&
                                time_before(jiffies, timeout))