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);