From 05374081e5baedbe36c1d17ce55aa020a69dbc9d Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Sat, 17 Dec 2022 16:29:36 +0800 Subject: [PATCH] media: rockchip: isp: fix lsc table read by isp for multi sensor Change-Id: Ic04c7521ee17806d74732aa852e9347411f92281 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/isp_params_v3x.c | 2 ++ drivers/media/platform/rockchip/isp/regs_v3x.h | 1 + drivers/media/platform/rockchip/isp/rkisp.c | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.c b/drivers/media/platform/rockchip/isp/isp_params_v3x.c index 4985099973e5..6c13d7ecccea 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v3x.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.c @@ -655,6 +655,8 @@ isp_lsc_config(struct rkisp_isp_params_vdev *params_vdev, lsc_ctrl |= ISP3X_LSC_SECTOR_16X16; else lsc_ctrl &= ~ISP3X_LSC_SECTOR_16X16; + if (!dev->hw_dev->is_single) + lsc_ctrl |= ISP3X_LSC_PRE_RD_ST_MODE; isp3_param_write(params_vdev, lsc_ctrl, ISP3X_LSC_CTRL, id); } diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h index 13e6f0acb03e..df6c1ee55e3e 100644 --- a/drivers/media/platform/rockchip/isp/regs_v3x.h +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -2139,6 +2139,7 @@ #define ISP3X_LSC_TABLE_ADDRESS_153 153 #define ISP3X_LSC_SECTOR_16X16 BIT(2) +#define ISP3X_LSC_PRE_RD_ST_MODE BIT(4) /* RAWAE */ #define ISP3X_RAWAE_LITE_EN BIT(0) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 2478aa3c0dd9..a168fc0e2a5c 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -615,7 +615,7 @@ void rkisp_trigger_read_back(struct rkisp_device *dev, u8 dma2frm, u32 mode, boo if (!hw->is_single && !is_try) { rkisp_update_regs(dev, CTRL_VI_ISP_PATH, SUPER_IMP_COLOR_CR); rkisp_update_regs(dev, DUAL_CROP_M_H_OFFS, ISP3X_DUAL_CROP_FBC_V_SIZE); - rkisp_update_regs(dev, ISP_ACQ_PROP, DUAL_CROP_CTRL); + rkisp_update_regs(dev, ISP_ACQ_H_OFFS, DUAL_CROP_CTRL); rkisp_update_regs(dev, SELF_RESIZE_SCALE_HY, MI_WR_CTRL); rkisp_update_regs(dev, ISP32_BP_RESIZE_SCALE_HY, SELF_RESIZE_CTRL); rkisp_update_regs(dev, MAIN_RESIZE_SCALE_HY, ISP32_BP_RESIZE_CTRL); @@ -693,6 +693,8 @@ run_next: val = rkisp_read(dev, ISP_CTRL, false); val |= CIF_ISP_CTRL_ISP_CFG_UPD; 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); } if (is_3dlut_upd) rkisp_unite_write(dev, ISP_3DLUT_UPDATE, 1, true, hw->is_unite);