diff --git a/drivers/media/platform/rockchip/isp/isp_params_v21.c b/drivers/media/platform/rockchip/isp/isp_params_v21.c index d8b978b6d495..737030906a61 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v21.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v21.c @@ -4264,10 +4264,14 @@ rkisp_params_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev, struct rkisp_isp_params_val_v21 *priv_val = (struct rkisp_isp_params_val_v21 *)params_vdev->priv_val; - priv_val->last_hdrmge = priv_val->cur_hdrmge; - priv_val->last_hdrdrc = priv_val->cur_hdrdrc; - priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; - priv_val->cur_hdrdrc = new_params->others.drc_cfg; + if (new_params->module_cfg_update & ISP2X_MODULE_HDRMGE) { + priv_val->last_hdrmge = priv_val->cur_hdrmge; + priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; + } + if (new_params->module_cfg_update & ISP2X_MODULE_DRC) { + priv_val->last_hdrdrc = priv_val->cur_hdrdrc; + priv_val->cur_hdrdrc = new_params->others.drc_cfg; + } new_params->module_cfg_update = 0; vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE); cur_buf = NULL; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v32.c b/drivers/media/platform/rockchip/isp/isp_params_v32.c index 7326ee32c7a5..2f36588ec155 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v32.c @@ -5300,10 +5300,15 @@ rkisp_params_cfg_v32(struct rkisp_isp_params_vdev *params_vdev, struct rkisp_isp_params_val_v32 *priv_val = (struct rkisp_isp_params_val_v32 *)params_vdev->priv_val; - priv_val->last_hdrmge = priv_val->cur_hdrmge; - priv_val->last_hdrdrc = priv_val->cur_hdrdrc; - priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; - priv_val->cur_hdrdrc = new_params->others.drc_cfg; + if (new_params->module_cfg_update & ISP32_MODULE_HDRMGE) { + priv_val->last_hdrmge = priv_val->cur_hdrmge; + priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; + } + + if (new_params->module_cfg_update & ISP32_MODULE_DRC) { + priv_val->last_hdrdrc = priv_val->cur_hdrdrc; + priv_val->cur_hdrdrc = new_params->others.drc_cfg; + } new_params->module_cfg_update = 0; vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE); cur_buf = NULL; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.c b/drivers/media/platform/rockchip/isp/isp_params_v3x.c index 87db6aa87554..d5373380d7fc 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v3x.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.c @@ -4773,10 +4773,15 @@ rkisp_params_cfg_v3x(struct rkisp_isp_params_vdev *params_vdev, struct rkisp_isp_params_val_v3x *priv_val = (struct rkisp_isp_params_val_v3x *)params_vdev->priv_val; - priv_val->last_hdrmge = priv_val->cur_hdrmge; - priv_val->last_hdrdrc = priv_val->cur_hdrdrc; - priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; - priv_val->cur_hdrdrc = new_params->others.drc_cfg; + if (new_params->module_cfg_update & ISP3X_MODULE_HDRMGE) { + priv_val->last_hdrmge = priv_val->cur_hdrmge; + priv_val->cur_hdrmge = new_params->others.hdrmge_cfg; + } + + if (new_params->module_cfg_update & ISP3X_MODULE_DRC) { + priv_val->last_hdrdrc = priv_val->cur_hdrdrc; + priv_val->cur_hdrdrc = new_params->others.drc_cfg; + } new_params->module_cfg_update = 0; if (hw_dev->is_unite) (new_params++)->module_cfg_update = 0;