hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/platform/rockchip/isp/isp_stats_v32.c
....@@ -468,7 +468,7 @@
468468 struct rkisp_isp_params_val_v32 *priv_val;
469469 struct rkisp_dummy_buffer *buf;
470470 int idx, buf_fd = -1;
471
- u32 reg = 0, ctrl;
471
+ u32 reg = 0, ctrl, mask;
472472
473473 priv_val = (struct rkisp_isp_params_val_v32 *)dev->params_vdev.priv_val;
474474 if (!priv_val->buf_info_owner && priv_val->buf_info_idx >= 0) {
....@@ -481,9 +481,11 @@
481481 if (priv_val->buf_info_owner == RKISP_INFO2DRR_OWNER_GAIN) {
482482 reg = ISP3X_GAIN_CTRL;
483483 ctrl = ISP3X_GAIN_2DDR_EN;
484
+ mask = ISP3X_GAIN_2DDR_EN;
484485 } else {
485486 reg = ISP3X_RAWAWB_CTRL;
486487 ctrl = ISP32_RAWAWB_2DDR_PATH_EN;
488
+ mask = ISP32_RAWAWB_2DDR_PATH_EN | ISP32_RAWAWB_2DDR_PATH_DS;
487489 }
488490
489491 idx = priv_val->buf_info_idx;
....@@ -510,6 +512,12 @@
510512 } else if (reg == ISP3X_RAWAWB_CTRL &&
511513 rkisp_read(dev, reg, true) & ISP32_RAWAWB_2DDR_PATH_ERR) {
512514 v4l2_warn(&dev->v4l2_dev, "rawawb2ddr path error idx:%d\n", idx);
515
+ } else {
516
+ u32 v0 = rkisp_read(dev, reg, false);
517
+ u32 v1 = rkisp_read_reg_cache(dev, reg);
518
+
519
+ if ((v0 & mask) != (v1 & mask))
520
+ rkisp_write(dev, reg, v0 | (v1 & mask), false);
513521 }
514522
515523 if (buf_fd == -1)
....@@ -627,6 +635,9 @@
627635 ops->get_dhaz_stats(stats_vdev, cur_stat_buf);
628636 ops->get_vsm_stats(stats_vdev, cur_stat_buf);
629637 }
638
+
639
+ if (cur_stat_buf && stats_vdev->dev->is_first_double)
640
+ cur_stat_buf->meas_type |= ISP32_STAT_RTT_FST;
630641
631642 if (is_dummy) {
632643 spin_lock_irqsave(&stats_vdev->rd_lock, flags);
....@@ -1035,7 +1046,7 @@
10351046 work.frame_id = cur_frame_id;
10361047 work.isp_ris = temp_isp_ris | isp_ris;
10371048 work.isp3a_ris = temp_isp3a_ris;
1038
- work.timestamp = ktime_get_ns();
1049
+ work.timestamp = rkisp_time_get_ns(stats_vdev->dev);
10391050 rkisp_stats_send_meas_v32(stats_vdev, &work);
10401051 }
10411052