From 9eacb0f92f34bbefe9553088dc4eda9383319834 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Mon, 3 Jun 2024 15:13:22 +0800 Subject: [PATCH] media: rockchip: isp: fix ldcv irq handle Change-Id: Iabada025762c66e6881472420e1351f5da2510ea Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/capture_v39.c | 8 +++++++- drivers/media/platform/rockchip/isp/regs_v3x.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/capture_v39.c b/drivers/media/platform/rockchip/isp/capture_v39.c index 442ccd28039d..1ed0b0a11ac7 100644 --- a/drivers/media/platform/rockchip/isp/capture_v39.c +++ b/drivers/media/platform/rockchip/isp/capture_v39.c @@ -1814,7 +1814,13 @@ end: void rkisp_stream_ldc_end_v39(struct rkisp_device *dev) { struct rkisp_stream *stream = &dev->cap_dev.stream[RKISP_STREAM_LDC]; + u32 val = rkisp_read(dev, ISP39_LDCV_CTRL, true); + /* ldcv_irq: ldcv enable is frame end other frame input */ + if (val & ISP39_LDCV_MAP_ERROR) { + v4l2_err(&dev->v4l2_dev, "ldcv map data error\n"); + return; + } if (stream->stopping) { if (!dev->hw_dev->is_single) { stream->stopping = false; @@ -1826,7 +1832,7 @@ void rkisp_stream_ldc_end_v39(struct rkisp_device *dev) stream->streaming = false; wake_up(&stream->done); } - } else { + } else if (stream->streaming) { mi_frame_end(stream, FRAME_IRQ); } rkisp_check_idle(dev, ISP_FRAME_LDC); diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h index 31f023918c2f..3ad0ae284b7c 100644 --- a/drivers/media/platform/rockchip/isp/regs_v3x.h +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -2533,6 +2533,8 @@ #define ISP39_LDCV_UV_SWAP BIT(4) #define ISP39_LDCV_LUT_MODE(x) ((x & 0x3) << 24) #define ISP39_LDCV_FORCE_UPD BIT(26) +#define ISP39_LDCV_MAP_ERROR BIT(28) +#define ISP39_LDCV_WORKING BIT(30) #define ISP39_LDCV_EN_SHD BIT(31) /* mi interrupt */