diff --git a/drivers/media/platform/rockchip/isp/isp_params_v32.c b/drivers/media/platform/rockchip/isp/isp_params_v32.c index 35eeb4b7e223..26ddc6d86c29 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v32.c @@ -4977,8 +4977,10 @@ rkisp_params_first_cfg_v32(struct rkisp_isp_params_vdev *params_vdev) isp3_param_write(params_vdev, addr + size * i, ISP32L_FRM_BUF_RD_BASE, i); } } - if (dev->hw_dev->is_single && (dev->isp_state & ISP_START)) + if (dev->hw_dev->is_single && (dev->isp_state & ISP_START)) { rkisp_set_bits(dev, ISP3X_ISP_CTRL0, 0, CIF_ISP_CTRL_ISP_CFG_UPD, true); + rkisp_clear_reg_cache_bits(dev, CIF_ISP_CTRL, CIF_ISP_CTRL_ISP_CFG_UPD); + } } static void rkisp_save_first_param_v32(struct rkisp_isp_params_vdev *params_vdev, void *param) diff --git a/drivers/media/platform/rockchip/isp/isp_params_v39.c b/drivers/media/platform/rockchip/isp/isp_params_v39.c index 463f6c48e14e..baaa59e8d880 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v39.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v39.c @@ -4543,8 +4543,10 @@ rkisp_params_first_cfg_v39(struct rkisp_isp_params_vdev *params_vdev) isp3_param_write(params_vdev, addr + size * i, ISP32L_FRM_BUF_RD_BASE, i); } } - if (dev->hw_dev->is_single && (dev->isp_state & ISP_START)) + if (dev->hw_dev->is_single && (dev->isp_state & ISP_START)) { rkisp_set_bits(dev, ISP3X_ISP_CTRL0, 0, CIF_ISP_CTRL_ISP_CFG_UPD, true); + rkisp_clear_reg_cache_bits(dev, ISP3X_ISP_CTRL0, CIF_ISP_CTRL_ISP_CFG_UPD); + } } static void rkisp_save_first_param_v39(struct rkisp_isp_params_vdev *params_vdev, void *param) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index a9020fd152fe..d0d6d85c76ff 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -825,7 +825,9 @@ run_next: if (is_upd) { val = rkisp_read(dev, ISP_CTRL, false); val |= CIF_ISP_CTRL_ISP_CFG_UPD; - rkisp_unite_write(dev, ISP_CTRL, val, true); + writel(val, hw->base_addr + ISP_CTRL); + if (hw->unite == ISP_UNITE_TWO) + writel(val, hw->base_next_addr + ISP_CTRL); /* bayer pat after ISP_CFG_UPD for multi sensor to read lsc r/g/b table */ rkisp_update_regs(dev, ISP3X_ISP_CTRL1, ISP3X_ISP_CTRL1); /* fix ldch multi sensor case: