summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Lavnikevich <d.lavnikevich@sam-solutions.net>2013-07-30 15:30:52 +0300
committerJustin Waters <justin.waters@timesys.com>2013-11-07 12:19:35 -0500
commit59b3dbc0264ad28522827c61c7548c6db2bd5782 (patch)
treea60eba7c71971d4974667c572837ff994864fbd2
parent4c8105e21478f80c7dda3c85ecd95761802761b7 (diff)
Fix for 'bucking' problem.
Minor changes into camera host driver: - reinitialize current buffer index with 0 on each capture start; - do not change buffer index if channel buffer wasn't updated. Signed-off-by: Christian Hemp <c.hemp@phytec.de>
-rw-r--r--drivers/media/video/mxc_camera.c1
-rw-r--r--drivers/media/video/mxc_ipu_csi_enc.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/media/video/mxc_camera.c b/drivers/media/video/mxc_camera.c
index ef7538b8ad2b..d3650c30dc7d 100644
--- a/drivers/media/video/mxc_camera.c
+++ b/drivers/media/video/mxc_camera.c
@@ -450,6 +450,7 @@ static int mxc_camera_add_device(struct soc_camera_device *icd)
mxc_camera_activate(mxc_cam, icd);
mxc_cam->icd = icd;
+ mxc_cam->csi_buf_num = 0;
dev_info(icd->dev.parent, "MXC Camera driver attached to camera %d\n",
icd->devnum);
diff --git a/drivers/media/video/mxc_ipu_csi_enc.c b/drivers/media/video/mxc_ipu_csi_enc.c
index b6952468b408..9d0b06672730 100644
--- a/drivers/media/video/mxc_ipu_csi_enc.c
+++ b/drivers/media/video/mxc_ipu_csi_enc.c
@@ -172,6 +172,8 @@ static int csi_enc_eba_update(struct ipu_soc *ipu, int csi, dma_addr_t eba,
err = ipu_update_channel_buffer(ipu, get_csi_mem_dma_channel(csi), IPU_OUTPUT_BUFFER,
*buffer_num, eba);
if (err != 0) {
+ int err;
+
ipu_clear_buffer_ready(ipu, get_csi_mem_dma_channel(csi), IPU_OUTPUT_BUFFER,
*buffer_num);
@@ -186,7 +188,8 @@ static int csi_enc_eba_update(struct ipu_soc *ipu, int csi, dma_addr_t eba,
ipu_select_buffer(ipu, get_csi_mem_dma_channel(csi), IPU_OUTPUT_BUFFER, *buffer_num);
- *buffer_num = (*buffer_num == 0) ? 1 : 0;
+ if(!err)
+ *buffer_num = (*buffer_num == 0) ? 1 : 0;
return 0;
}