From 08c66b08ce17798f3bbdcdee5b247628817f91d3 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 3 Jan 2024 12:01:02 +0800 Subject: [PATCH] media: rockchip: isp: sync irq_ends irqs in different cpu will change irq_ends flag, lock to sync. Change-Id: Ie5467825173a16c796c7ab84c15286af44edc5d9 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/rkisp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index c9ffd1ed9094..c3eda3fa3fec 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -1072,8 +1072,10 @@ static void rkisp_rdbk_work(struct work_struct *work) void rkisp_check_idle(struct rkisp_device *dev, u32 irq) { + unsigned long lock_flags = 0; u32 val = 0; + spin_lock_irqsave(&dev->hw_dev->rdbk_lock, lock_flags); dev->irq_ends |= (irq & dev->irq_ends_mask); v4l2_dbg(3, rkisp_debug, &dev->v4l2_dev, "%s irq:0x%x ends:0x%x mask:0x%x\n", @@ -1085,8 +1087,11 @@ void rkisp_check_idle(struct rkisp_device *dev, u32 irq) complete(&dev->hw_dev->monitor.cmpl); } if ((dev->irq_ends & dev->irq_ends_mask) != dev->irq_ends_mask || - !IS_HDR_RDBK(dev->rd_mode)) + !IS_HDR_RDBK(dev->rd_mode)) { + spin_unlock_irqrestore(&dev->hw_dev->rdbk_lock, lock_flags); return; + } + spin_unlock_irqrestore(&dev->hw_dev->rdbk_lock, lock_flags); if (dev->sw_rd_cnt) goto end;