From c6bee6d5ef274dacbfd418259c08ae173f7dc037 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 26 Jul 2022 10:39:17 +0800 Subject: [PATCH] media: rockchip: isp: fix error of lsc repeat switch Change-Id: I8b7948ad784c34d05a2495f9dde535cb4a265d7f Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/isp_params_v32.c | 5 ++++- drivers/media/platform/rockchip/isp/isp_params_v3x.c | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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);