From 846b7640cf99df63ba3773744c0dd464350de957 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 12 Jul 2022 11:44:57 +0800 Subject: [PATCH] media: rockchip: isp: fix ldch err Change-Id: I6b8e2beb068343823fe46a96a4384f3159ae960f Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/rkisp.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index ddc8bdaa0929..5ed8aae5f5c8 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -698,6 +698,19 @@ run_next: rkisp_unite_write(dev, ISP_CTRL, val, true, hw->is_unite); /* bayer pat after ISP_CFG_UPD for multi sensor to read lsc r/g/b table */ rkisp_update_regs(dev, ISP_ACQ_PROP, ISP_ACQ_PROP); + /* fix ldch multi sensor case: + * ldch will pre-read data when en and isp force upd or frame end, + * udelay for ldch pre-read data. + * ldch en=0 before start for frame end to stop ldch read data. + */ + val = rkisp_read(dev, ISP_LDCH_BASE, true); + if (!hw->is_single && val & BIT(0)) { + udelay(50); + val &= ~(BIT(0) | BIT(31)); + writel(val, hw->base_addr + ISP_LDCH_BASE); + if (hw->is_unite) + writel(val, hw->base_next_addr + ISP_LDCH_BASE); + } } if (is_3dlut_upd) rkisp_unite_write(dev, ISP_3DLUT_UPDATE, 1, true, hw->is_unite);