summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2013-09-04 09:48:20 -0300
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-12-11 07:00:34 -0200
commit82043ff6af1300ba6cdc868adbafbc5ee6965a89 (patch)
treee02a3e3177034fe2f0c77b43d7329c3cfaa21d3a
parent97059524ba6fd6c7dc77fa97e6957501b85af3be (diff)
[media] v4l: omap4iss: resizer: Stop the whole resizer to avoid FIFO overflows
When stopping the resizer due to a buffer underrun, disabling RZA only produces input FIFO overflows, most probably when the next frame is received. Disable the whole resizer to work around the problem. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r--drivers/staging/media/omap4iss/iss_resizer.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/staging/media/omap4iss/iss_resizer.c b/drivers/staging/media/omap4iss/iss_resizer.c
index 793325c33f8..5bf50808acc 100644
--- a/drivers/staging/media/omap4iss/iss_resizer.c
+++ b/drivers/staging/media/omap4iss/iss_resizer.c
@@ -266,10 +266,12 @@ static void resizer_configure(struct iss_resizer_device *resizer)
static void resizer_isr_buffer(struct iss_resizer_device *resizer)
{
- struct iss_device *iss = to_iss_device(resizer);
struct iss_buffer *buffer;
- iss_reg_clr(iss, OMAP4_ISS_MEM_ISP_RESIZER, RZA_EN, RSZ_EN_EN);
+ /* The whole resizer needs to be stopped. Disabling RZA only produces
+ * input FIFO overflows, most probably when the next frame is received.
+ */
+ resizer_enable(resizer, 0);
buffer = omap4iss_video_buffer_next(&resizer->video_out);
if (buffer == NULL)
@@ -277,7 +279,7 @@ static void resizer_isr_buffer(struct iss_resizer_device *resizer)
resizer_set_outaddr(resizer, buffer->iss_addr);
- iss_reg_set(iss, OMAP4_ISS_MEM_ISP_RESIZER, RZA_EN, RSZ_EN_EN);
+ resizer_enable(resizer, 1);
}
/*