mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
media: rockchip: isp: sync params state
The configured parameter buf, module_cfg_update will set to 0 for user. ISP2X_MODULE_FORCE BIT(64) for parameter buf to use. Change-Id: I54f867b4ca50ae1ebfbee884b44bbf1a5cfc53b9 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -4081,10 +4081,14 @@ rkisp_params_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev,
|
||||
list_del(&cur_buf->queue);
|
||||
if (list_empty(¶ms_vdev->params))
|
||||
break;
|
||||
else if (new_params->module_en_update) {
|
||||
else if (new_params->module_en_update ||
|
||||
(new_params->module_cfg_update & ISP2X_MODULE_FORCE)) {
|
||||
/* update en immediately */
|
||||
__isp_isr_meas_config(params_vdev, new_params, type);
|
||||
__isp_isr_other_config(params_vdev, new_params, type);
|
||||
__isp_isr_other_en(params_vdev, new_params, type);
|
||||
__isp_isr_meas_en(params_vdev, new_params, type);
|
||||
new_params->module_cfg_update = 0;
|
||||
}
|
||||
if (new_params->module_cfg_update & ISP2X_MODULE_LDCH)
|
||||
ldch_data_abandon(params_vdev, new_params);
|
||||
@@ -4118,6 +4122,7 @@ rkisp_params_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev,
|
||||
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;
|
||||
new_params->module_cfg_update = 0;
|
||||
vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
cur_buf = NULL;
|
||||
}
|
||||
|
||||
@@ -4607,10 +4607,14 @@ rkisp_params_cfg_v32(struct rkisp_isp_params_vdev *params_vdev,
|
||||
list_del(&cur_buf->queue);
|
||||
if (list_empty(¶ms_vdev->params))
|
||||
break;
|
||||
else if (new_params->module_en_update) {
|
||||
else if (new_params->module_en_update ||
|
||||
(new_params->module_cfg_update & ISP32_MODULE_FORCE)) {
|
||||
/* update en immediately */
|
||||
__isp_isr_meas_config(params_vdev, new_params, type);
|
||||
__isp_isr_other_config(params_vdev, new_params, type);
|
||||
__isp_isr_other_en(params_vdev, new_params, type);
|
||||
__isp_isr_meas_en(params_vdev, new_params, type);
|
||||
new_params->module_cfg_update = 0;
|
||||
}
|
||||
if (new_params->module_cfg_update &
|
||||
(ISP32_MODULE_LDCH | ISP32_MODULE_CAC)) {
|
||||
@@ -4646,6 +4650,7 @@ rkisp_params_cfg_v32(struct rkisp_isp_params_vdev *params_vdev,
|
||||
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;
|
||||
new_params->module_cfg_update = 0;
|
||||
vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
cur_buf = NULL;
|
||||
}
|
||||
|
||||
@@ -4552,13 +4552,22 @@ rkisp_params_cfg_v3x(struct rkisp_isp_params_vdev *params_vdev,
|
||||
list_del(&cur_buf->queue);
|
||||
if (list_empty(¶ms_vdev->params))
|
||||
break;
|
||||
else if (new_params->module_en_update) {
|
||||
else if (new_params->module_en_update ||
|
||||
(new_params->module_cfg_update & ISP3X_MODULE_FORCE)) {
|
||||
/* update en immediately */
|
||||
__isp_isr_meas_config(params_vdev, new_params, type, 0);
|
||||
__isp_isr_other_config(params_vdev, new_params, type, 0);
|
||||
__isp_isr_other_en(params_vdev, new_params, type, 0);
|
||||
__isp_isr_meas_en(params_vdev, new_params, type, 0);
|
||||
new_params->module_cfg_update = 0;
|
||||
if (hw_dev->is_unite) {
|
||||
__isp_isr_other_en(params_vdev, new_params + 1, type, 1);
|
||||
__isp_isr_meas_en(params_vdev, new_params + 1, type, 1);
|
||||
struct isp3x_isp_params_cfg *params = new_params + 1;
|
||||
|
||||
__isp_isr_meas_config(params_vdev, params, type, 1);
|
||||
__isp_isr_other_config(params_vdev, params, type, 1);
|
||||
__isp_isr_other_en(params_vdev, params, type, 1);
|
||||
__isp_isr_meas_en(params_vdev, params, type, 1);
|
||||
params->module_cfg_update = 0;
|
||||
}
|
||||
}
|
||||
if (new_params->module_cfg_update &
|
||||
@@ -4603,6 +4612,9 @@ rkisp_params_cfg_v3x(struct rkisp_isp_params_vdev *params_vdev,
|
||||
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;
|
||||
new_params->module_cfg_update = 0;
|
||||
if (hw_dev->is_unite)
|
||||
(new_params++)->module_cfg_update = 0;
|
||||
vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
cur_buf = NULL;
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
#define ISP2X_ID_LDCH (33)
|
||||
#define ISP2X_ID_GAIN (34)
|
||||
#define ISP2X_ID_DEBAYER (35)
|
||||
#define ISP2X_ID_MAX (36)
|
||||
#define ISP2X_ID_MAX (63)
|
||||
|
||||
#define ISP2X_MODULE_DPCC BIT_ULL(ISP2X_ID_DPCC)
|
||||
#define ISP2X_MODULE_BLS BIT_ULL(ISP2X_ID_BLS)
|
||||
@@ -159,6 +159,8 @@
|
||||
#define ISP2X_MODULE_GAIN BIT_ULL(ISP2X_ID_GAIN)
|
||||
#define ISP2X_MODULE_DEBAYER BIT_ULL(ISP2X_ID_DEBAYER)
|
||||
|
||||
#define ISP2X_MODULE_FORCE BIT_ULL(ISP2X_ID_MAX)
|
||||
|
||||
/*
|
||||
* Measurement types
|
||||
*/
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
#define ISP3X_MODULE_CSM ISP2X_MODULE_CSM
|
||||
#define ISP3X_MODULE_CGC ISP2X_MODULE_CGC
|
||||
|
||||
#define ISP3X_MODULE_FORCE ISP2X_MODULE_FORCE
|
||||
|
||||
/* Measurement types */
|
||||
#define ISP3X_STAT_RAWAWB ISP2X_STAT_RAWAWB
|
||||
#define ISP3X_STAT_RAWAF ISP2X_STAT_RAWAF
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
#define ISP32_MODULE_CGC ISP3X_MODULE_CGC
|
||||
#define ISP32_MODULE_VSM BIT_ULL(45)
|
||||
|
||||
#define ISP32_MODULE_FORCE ISP3X_MODULE_FORCE
|
||||
|
||||
/* Measurement types */
|
||||
#define ISP32_STAT_RAWAWB ISP3X_STAT_RAWAWB
|
||||
#define ISP32_STAT_RAWAF ISP3X_STAT_RAWAF
|
||||
|
||||
Reference in New Issue
Block a user