From: Laurent Pinchart Date: Wed, 4 Sep 2013 12:48:20 +0000 (-0300) Subject: [media] v4l: omap4iss: resizer: Stop the whole resizer to avoid FIFO overflows X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=82043ff6af1300ba6cdc868adbafbc5ee6965a89;p=openwrt%2Fstaging%2Fblogic.git [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 Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/staging/media/omap4iss/iss_resizer.c b/drivers/staging/media/omap4iss/iss_resizer.c index 793325c33f81..5bf50808acc3 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); } /*