diff options
author | Dmitry Lavnikevich <d.lavnikevich@sam-solutions.net> | 2013-07-30 15:30:52 +0300 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2013-11-07 12:19:35 -0500 |
commit | 59b3dbc0264ad28522827c61c7548c6db2bd5782 (patch) | |
tree | a60eba7c71971d4974667c572837ff994864fbd2 | |
parent | 4c8105e21478f80c7dda3c85ecd95761802761b7 (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.c | 1 | ||||
-rw-r--r-- | drivers/media/video/mxc_ipu_csi_enc.c | 5 |
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; } |