This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: intel-ipu3: cio2: Disable and sync irq before stream off
Author:  Yong Zhi <yong....@intel.com>
Date:    Thu Feb 8 19:14:24 2018 -0500

This is to avoid pending interrupts to be handled during
stream off, in which case, the ready buffer will be removed
from buffer list, thus not all buffers can be returned to VB2
as expected. Disable CIO2 irq at cio2_hw_exit() so no new
interrupts are generated.

Signed-off-by: Yong Zhi <yong....@intel.com>
Signed-off-by: Tianshu Qiu <tian.shu....@intel.com>
Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++++
 1 file changed, 4 insertions(+)

---

diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c 
b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
index 6c4444b31f4b..b6b0cfe00ef5 100644
--- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
+++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
@@ -526,6 +526,8 @@ static void cio2_hw_exit(struct cio2_device *cio2, struct 
cio2_queue *q)
        unsigned int i, maxloops = 1000;
 
        /* Disable CSI receiver and MIPI backend devices */
+       writel(0, q->csi_rx_base + CIO2_REG_IRQCTRL_MASK);
+       writel(0, q->csi_rx_base + CIO2_REG_IRQCTRL_ENABLE);
        writel(0, q->csi_rx_base + CIO2_REG_CSIRX_ENABLE);
        writel(0, q->csi_rx_base + CIO2_REG_MIPIBE_ENABLE);
 
@@ -1035,6 +1037,7 @@ static void cio2_vb2_stop_streaming(struct vb2_queue *vq)
                        "failed to stop sensor streaming\n");
 
        cio2_hw_exit(cio2, q);
+       synchronize_irq(cio2->pci_dev->irq);
        cio2_vb2_return_all_buffers(q, VB2_BUF_STATE_ERROR);
        media_pipeline_stop(&q->vdev.entity);
        pm_runtime_put(&cio2->pci_dev->dev);
@@ -1976,6 +1979,7 @@ static int __maybe_unused cio2_suspend(struct device *dev)
 
        /* Stop stream */
        cio2_hw_exit(cio2, q);
+       synchronize_irq(pci_dev->irq);
 
        pm_runtime_force_suspend(dev);
 

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to