diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2011-12-07 06:34:50 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-12-20 06:53:43 -0500 |
commit | 875e2e3edf48a206c64195666cf408dd3d119137 (patch) | |
tree | d86bf2075ed22fe669af4896afbe41f357f52fcd /drivers/media/video/omap3isp/isppreview.c | |
parent | c3cd257402fdcd650816ec25b83480a24912430a (diff) |
[media] omap3isp: Mark next captured frame as faulty when an SBL overflow occurs
Instead of trying to propagate errors down the pipeline manually (and
failing to do so properly in all cases), flag SBL errors in the pipeline
to which the entity that triggered the error belongs, and use pipeline
error flags to mark buffers as faulty when completing them.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/omap3isp/isppreview.c')
-rw-r--r-- | drivers/media/video/omap3isp/isppreview.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/media/video/omap3isp/isppreview.c b/drivers/media/video/omap3isp/isppreview.c index 28a123273a25..6d0fb2c8c26d 100644 --- a/drivers/media/video/omap3isp/isppreview.c +++ b/drivers/media/video/omap3isp/isppreview.c | |||
@@ -1404,16 +1404,14 @@ static void preview_isr_buffer(struct isp_prev_device *prev) | |||
1404 | int restart = 0; | 1404 | int restart = 0; |
1405 | 1405 | ||
1406 | if (prev->input == PREVIEW_INPUT_MEMORY) { | 1406 | if (prev->input == PREVIEW_INPUT_MEMORY) { |
1407 | buffer = omap3isp_video_buffer_next(&prev->video_in, | 1407 | buffer = omap3isp_video_buffer_next(&prev->video_in); |
1408 | prev->error); | ||
1409 | if (buffer != NULL) | 1408 | if (buffer != NULL) |
1410 | preview_set_inaddr(prev, buffer->isp_addr); | 1409 | preview_set_inaddr(prev, buffer->isp_addr); |
1411 | pipe->state |= ISP_PIPELINE_IDLE_INPUT; | 1410 | pipe->state |= ISP_PIPELINE_IDLE_INPUT; |
1412 | } | 1411 | } |
1413 | 1412 | ||
1414 | if (prev->output & PREVIEW_OUTPUT_MEMORY) { | 1413 | if (prev->output & PREVIEW_OUTPUT_MEMORY) { |
1415 | buffer = omap3isp_video_buffer_next(&prev->video_out, | 1414 | buffer = omap3isp_video_buffer_next(&prev->video_out); |
1416 | prev->error); | ||
1417 | if (buffer != NULL) { | 1415 | if (buffer != NULL) { |
1418 | preview_set_outaddr(prev, buffer->isp_addr); | 1416 | preview_set_outaddr(prev, buffer->isp_addr); |
1419 | restart = 1; | 1417 | restart = 1; |
@@ -1440,8 +1438,6 @@ static void preview_isr_buffer(struct isp_prev_device *prev) | |||
1440 | default: | 1438 | default: |
1441 | return; | 1439 | return; |
1442 | } | 1440 | } |
1443 | |||
1444 | prev->error = 0; | ||
1445 | } | 1441 | } |
1446 | 1442 | ||
1447 | /* | 1443 | /* |
@@ -1565,7 +1561,6 @@ static int preview_set_stream(struct v4l2_subdev *sd, int enable) | |||
1565 | omap3isp_subclk_enable(isp, OMAP3_ISP_SUBCLK_PREVIEW); | 1561 | omap3isp_subclk_enable(isp, OMAP3_ISP_SUBCLK_PREVIEW); |
1566 | preview_configure(prev); | 1562 | preview_configure(prev); |
1567 | atomic_set(&prev->stopping, 0); | 1563 | atomic_set(&prev->stopping, 0); |
1568 | prev->error = 0; | ||
1569 | preview_print_status(prev); | 1564 | preview_print_status(prev); |
1570 | } | 1565 | } |
1571 | 1566 | ||