From 26f81bc56cbb0f0c6a76645e570ee14c03de0f8a Mon Sep 17 00:00:00 2001 From: Shilpa Mamidi Date: Tue, 8 Nov 2016 10:07:39 +0530 Subject: [PATCH] msm: isp: Clear irq status if irq is set again with same value Sometimes HW is giving same irq twice even after clearing irq. As workaround HW team suggested to read back irq after clearing and if read back irq is same as before clear then we need to clear register again. Change-Id: I79cecfa1c61c6224b8f9cef8146a2bb44a7522e8 Signed-off-by: Shilpa Mamidi --- drivers/media/platform/msm/camera_v2/isp/msm_isp40.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c index 981832b5a586..ba2d829461a2 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c @@ -586,6 +586,11 @@ static void msm_vfe40_read_and_clear_irq_status(struct vfe_device *vfe_dev, *irq_status0 &= vfe_dev->irq0_mask; *irq_status1 &= vfe_dev->irq1_mask; + if (*irq_status0 && + (*irq_status0 == msm_camera_io_r(vfe_dev->vfe_base + 0x38))) { + msm_camera_io_w(*irq_status0, vfe_dev->vfe_base + 0x30); + msm_camera_io_w_mb(1, vfe_dev->vfe_base + 0x24); + } if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status =