diff --git a/drivers/media/platform/rockchip/isp/isp_params.h b/drivers/media/platform/rockchip/isp/isp_params.h index 1d6f3591f7c5..9555e234ece6 100644 --- a/drivers/media/platform/rockchip/isp/isp_params.h +++ b/drivers/media/platform/rockchip/isp/isp_params.h @@ -76,7 +76,7 @@ struct rkisp_isp_params_vdev { enum v4l2_quantization quantization; enum rkisp_fmt_raw_pat_type raw_type; u32 in_mbus_code; - + u32 cur_frame_id; struct preisp_hdrae_para_s hdrae_para; struct rkisp_isp_params_ops *ops; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v21.c b/drivers/media/platform/rockchip/isp/isp_params_v21.c index 44dd7a945b92..9b42f6a4ba92 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v21.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v21.c @@ -3648,6 +3648,7 @@ void __isp_isr_meas_config(struct rkisp_isp_params_vdev *params_vdev, (struct rkisp_isp_params_v21_ops *)params_vdev->priv_ops; u64 module_cfg_update = new_params->module_cfg_update; + params_vdev->cur_frame_id = new_params->frame_id; if (type == RKISP_PARAMS_SHD) return; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v32.c b/drivers/media/platform/rockchip/isp/isp_params_v32.c index 6d1c9430082b..bd136d73a3cb 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v32.c @@ -3961,6 +3961,7 @@ void __isp_isr_meas_config(struct rkisp_isp_params_vdev *params_vdev, (struct rkisp_isp_params_val_v32 *)params_vdev->priv_val; u64 module_cfg_update = new_params->module_cfg_update; + params_vdev->cur_frame_id = new_params->frame_id; if (type == RKISP_PARAMS_SHD) return; diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.c b/drivers/media/platform/rockchip/isp/isp_params_v3x.c index d5952bfcd8fb..e31c2500903e 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v3x.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.c @@ -4016,6 +4016,7 @@ void __isp_isr_meas_config(struct rkisp_isp_params_vdev *params_vdev, (struct rkisp_isp_params_ops_v3x *)params_vdev->priv_ops; u64 module_cfg_update = new_params->module_cfg_update; + params_vdev->cur_frame_id = new_params->frame_id; if (type == RKISP_PARAMS_SHD) return; diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v21.c b/drivers/media/platform/rockchip/isp/isp_stats_v21.c index 065d2dbd08ab..cb835eee69cb 100644 --- a/drivers/media/platform/rockchip/isp/isp_stats_v21.c +++ b/drivers/media/platform/rockchip/isp/isp_stats_v21.c @@ -948,6 +948,7 @@ rkisp_stats_send_meas_v21(struct rkisp_isp_stats_vdev *stats_vdev, struct rkisp_isp21_stat_buffer *cur_stat_buf = NULL; struct rkisp_stats_v21_ops *ops = (struct rkisp_stats_v21_ops *)stats_vdev->priv_ops; + struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev; int ret = 0; cur_frame_id = meas_work->frame_id; @@ -966,6 +967,7 @@ rkisp_stats_send_meas_v21(struct rkisp_isp_stats_vdev *stats_vdev, cur_stat_buf = (struct rkisp_isp21_stat_buffer *)(cur_buf->vaddr[0]); cur_stat_buf->frame_id = cur_frame_id; + cur_stat_buf->params_id = params_vdev->cur_frame_id; } if (meas_work->isp_ris & ISP2X_AFM_SUM_OF) diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v32.c b/drivers/media/platform/rockchip/isp/isp_stats_v32.c index b66d0caf4715..fb6a9bb0c723 100644 --- a/drivers/media/platform/rockchip/isp/isp_stats_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_stats_v32.c @@ -509,6 +509,7 @@ rkisp_stats_send_meas_v32(struct rkisp_isp_stats_vdev *stats_vdev, struct rkisp32_isp_stat_buffer *cur_stat_buf = NULL; struct rkisp_stats_ops_v32 *ops = (struct rkisp_stats_ops_v32 *)stats_vdev->priv_ops; + struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev; u32 size = sizeof(struct rkisp32_isp_stat_buffer); int ret = 0; bool is_dummy = false; @@ -600,6 +601,7 @@ rkisp_stats_send_meas_v32(struct rkisp_isp_stats_vdev *stats_vdev, list_del(&cur_buf->queue); } else { cur_stat_buf->frame_id = cur_frame_id; + cur_stat_buf->params_id = params_vdev->cur_frame_id; } spin_unlock_irqrestore(&stats_vdev->rd_lock, flags); if (cur_buf) { @@ -609,6 +611,7 @@ rkisp_stats_send_meas_v32(struct rkisp_isp_stats_vdev *stats_vdev, } if (cur_buf && cur_stat_buf) { cur_stat_buf->frame_id = cur_frame_id; + cur_stat_buf->params_id = params_vdev->cur_frame_id; cur_stat_buf->params.info2ddr.buf_fd = -1; cur_stat_buf->params.info2ddr.owner = 0; rkisp_stats_info2ddr(stats_vdev, cur_stat_buf); diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v3x.c b/drivers/media/platform/rockchip/isp/isp_stats_v3x.c index 43aeb618b6f9..3b72a1c339f0 100644 --- a/drivers/media/platform/rockchip/isp/isp_stats_v3x.c +++ b/drivers/media/platform/rockchip/isp/isp_stats_v3x.c @@ -970,6 +970,7 @@ rkisp_stats_send_meas_v3x(struct rkisp_isp_stats_vdev *stats_vdev, struct rkisp3x_isp_stat_buffer *cur_stat_buf = NULL; struct rkisp_stats_ops_v3x *ops = (struct rkisp_stats_ops_v3x *)stats_vdev->priv_ops; + struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev; int ret = 0; u32 size = sizeof(struct rkisp3x_isp_stat_buffer); @@ -989,6 +990,7 @@ rkisp_stats_send_meas_v3x(struct rkisp_isp_stats_vdev *stats_vdev, cur_stat_buf = (struct rkisp3x_isp_stat_buffer *)(cur_buf->vaddr[0]); cur_stat_buf->frame_id = cur_frame_id; + cur_stat_buf->params_id = params_vdev->cur_frame_id; } if (meas_work->isp_ris & ISP3X_AFM_SUM_OF) diff --git a/include/uapi/linux/rkisp21-config.h b/include/uapi/linux/rkisp21-config.h index fc72ef94159b..3e83014823f7 100644 --- a/include/uapi/linux/rkisp21-config.h +++ b/include/uapi/linux/rkisp21-config.h @@ -805,6 +805,7 @@ struct isp21_stat { struct rkisp_isp21_stat_buffer { unsigned int meas_type; unsigned int frame_id; + unsigned int params_id; struct isp21_stat params; } __attribute__ ((packed)); diff --git a/include/uapi/linux/rkisp3-config.h b/include/uapi/linux/rkisp3-config.h index 1ea2a910385c..06cb06807b7e 100644 --- a/include/uapi/linux/rkisp3-config.h +++ b/include/uapi/linux/rkisp3-config.h @@ -1070,6 +1070,7 @@ struct isp3x_stat { struct rkisp3x_isp_stat_buffer { u32 meas_type; u32 frame_id; + u32 params_id; struct isp3x_stat params; } __attribute__ ((packed)); diff --git a/include/uapi/linux/rkisp32-config.h b/include/uapi/linux/rkisp32-config.h index c2ad9123a3d7..a967b3aad751 100644 --- a/include/uapi/linux/rkisp32-config.h +++ b/include/uapi/linux/rkisp32-config.h @@ -1398,6 +1398,7 @@ struct rkisp32_isp_stat_buffer { struct isp32_stat params; u32 meas_type; u32 frame_id; + u32 params_id; } __attribute__ ((packed)); struct rkisp32_thunderboot_resmem_head {