summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c11
-rw-r--r--include/uapi/media/msmb_isp.h2
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
index 1af55fe257af..9d83bf2a4ad4 100644
--- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -879,6 +879,9 @@ static void msm_isp_sync_dual_cam_frame_id(
ms_res->src_info[i]->dual_hw_ms_info.index);
}
}
+ /* the number of frames that are dropped */
+ vfe_dev->isp_page->dual_cam_drop =
+ frame_id - (src_info->frame_id + 1);
ms_res->active_src_mask |= (1 << src_info->dual_hw_ms_info.index);
src_info->frame_id = frame_id;
src_info->dual_hw_ms_info.sync_state = MSM_ISP_DUAL_CAM_SYNC;
@@ -916,6 +919,8 @@ void msm_isp_increment_frame_id(struct vfe_device *vfe_dev,
src_info->dual_hw_ms_info.index)) {
pr_err_ratelimited("Frame out of sync on vfe %d\n",
vfe_dev->pdev->id);
+ /* Notify to do reconfig at SW sync drop*/
+ vfe_dev->isp_page->dual_cam_drop_detected = 1;
/*
* set this isp as async mode to force
*it sync again at the next sof
@@ -2258,8 +2263,8 @@ static int msm_isp_process_done_buf(struct vfe_device *vfe_dev,
MSM_ISP_BUFFER_STATE_PUT_BUF;
buf->buf_debug.put_state_last ^= 1;
rc = vfe_dev->buf_mgr->ops->buf_done(vfe_dev->buf_mgr,
- buf->bufq_handle, buf->buf_idx, time_stamp,
- frame_id, stream_info->runtime_output_format);
+ buf->bufq_handle, buf->buf_idx, time_stamp,
+ frame_id, stream_info->runtime_output_format);
if (rc == -EFAULT) {
msm_isp_halt_send_error(vfe_dev,
ISP_EVENT_BUF_FATAL_ERROR);
diff --git a/include/uapi/media/msmb_isp.h b/include/uapi/media/msmb_isp.h
index 40e5c273011f..b1c02f297e91 100644
--- a/include/uapi/media/msmb_isp.h
+++ b/include/uapi/media/msmb_isp.h
@@ -33,6 +33,8 @@ struct isp_kstate {
uint32_t kernel_sofid;
uint32_t drop_reconfig;
uint32_t vfeid;
+ uint32_t dual_cam_drop_detected;
+ uint32_t dual_cam_drop;
};
enum ISP_START_PIXEL_PATTERN {