diff --git a/drivers/media/platform/rockchip/isp/isp_params_v32.c b/drivers/media/platform/rockchip/isp/isp_params_v32.c index c22df0085fdc..3fe9c674e3a0 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v32.c @@ -582,7 +582,10 @@ static void isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en) { struct isp32_isp_params_cfg *params_rec = params_vdev->isp32_params; - u32 val; + u32 val = isp3_param_read(params_vdev, ISP3X_LSC_CTRL); + + if (en == !!(val & ISP_LSC_EN)) + return; if (en) { val = ISP_LSC_EN | ISP32_SELF_FORCE_UPD; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.c b/drivers/media/platform/rockchip/isp/isp_params_v3x.c index 9e0b6934a818..3d066c6c03b9 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v3x.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.c @@ -662,10 +662,13 @@ static void isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id) { struct isp3x_isp_params_cfg *params_rec = params_vdev->isp3x_params + id; - u32 val = ISP_LSC_EN; + u32 val = isp3_param_read(params_vdev, ISP3X_LSC_CTRL, id); + + if (en == !!(val & ISP_LSC_EN)) + return; if (en) { - isp3_param_set_bits(params_vdev, ISP3X_LSC_CTRL, val, id); + isp3_param_set_bits(params_vdev, ISP3X_LSC_CTRL, ISP_LSC_EN, id); if (params_vdev->dev->hw_dev->is_single) isp_lsc_matrix_cfg_sram(params_vdev, ¶ms_rec->others.lsc_cfg, false, id);