summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJing Zhou <jzhou70@codeaurora.org>2016-05-24 16:37:11 -0700
committerKyle Yan <kyan@codeaurora.org>2016-06-22 14:41:19 -0700
commitb5bb5c7d6fbba20566d8a3d59842fc51c64e5372 (patch)
tree8137e76742e743a6490f005814a8cdb1a3c25f1c /drivers
parent5fbfb727e3e6dbb01002a9a49fab627bb60554eb (diff)
msm: camera: isp: Fix framedrop reporting
This change fixed the framedrop reporting that causes the CTS test failure. The failure is due to the wrong frame id is used to report the framedrop. This change will change the framedrop report logic so that the correct frame id is used. Change-Id: I5b219ed570b81a7fd6a97be46977cafd3e452492 Signed-off-by: Jing Zhou <jzhou70@codeaurora.org> Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c19
1 files changed, 10 insertions, 9 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 5a9d94897c0b..225572c00ff2 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
@@ -1533,12 +1533,8 @@ static struct msm_isp_buffer *msm_isp_get_stream_buffer(
ISP_EVENT_BUF_FATAL_ERROR);
return buf;
}
- if (rc < 0) {
- vfe_dev->error_info.
- stream_framedrop_count[bufq_handle & 0xFF]++;
- vfe_dev->error_info.framedrop_flag = 1;
+ if (rc < 0)
return buf;
- }
if (buf->num_planes != stream_info->num_planes) {
pr_err("%s: Invalid buffer\n", __func__);
@@ -2865,14 +2861,13 @@ static int msm_isp_return_empty_buffer(struct vfe_device *vfe_dev,
msm_isp_halt_send_error(vfe_dev, ISP_EVENT_BUF_FATAL_ERROR);
return rc;
}
+
if (rc < 0 || buf == NULL) {
- vfe_dev->error_info.
- stream_framedrop_count[bufq_handle & 0xFF]++;
+ pr_err("Skip framedrop report due to no buffer\n");
return rc;
}
msm_isp_get_timestamp(&timestamp);
-
buf->buf_debug.put_state[buf->buf_debug.put_state_last] =
MSM_ISP_BUFFER_STATE_DROP_REG;
buf->buf_debug.put_state_last ^= 1;
@@ -2882,7 +2877,7 @@ static int msm_isp_return_empty_buffer(struct vfe_device *vfe_dev,
stream_info->runtime_output_format);
if (rc == -EFAULT) {
msm_isp_halt_send_error(vfe_dev,
- ISP_EVENT_BUF_FATAL_ERROR);
+ ISP_EVENT_BUF_FATAL_ERROR);
return rc;
}
@@ -3437,6 +3432,12 @@ void msm_isp_process_axi_irq_stream(struct vfe_device *vfe_dev,
}
if (!done_buf) {
+ if (stream_info->buf_divert) {
+ vfe_dev->error_info.stream_framedrop_count[
+ stream_info->bufq_handle[
+ VFE_BUF_QUEUE_DEFAULT] & 0xFF]++;
+ vfe_dev->error_info.framedrop_flag = 1;
+ }
spin_unlock_irqrestore(&stream_info->lock, flags);
return;
}