* [PATCH 1/1] omap3isp: preview: Mark output buffer done first
@ 2015-11-10 23:34 Sakari Ailus
2015-11-11 22:35 ` Laurent Pinchart
0 siblings, 1 reply; 2+ messages in thread
From: Sakari Ailus @ 2015-11-10 23:34 UTC (permalink / raw)
To: linux-media; +Cc: laurent.pinchart
The sequence number counter is incremented on each output buffer, and that
incremented value is used as the sequence number of that buffer. The input
buffer sequence numbering is based just on reading the same counter. If
the input buffer is marked done first, its sequence number ends up being
that of the output buffer - 1.
This is how the resizer works as well.
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
---
drivers/media/platform/omap3isp/isppreview.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/media/platform/omap3isp/isppreview.c b/drivers/media/platform/omap3isp/isppreview.c
index cfb2debb..1478076 100644
--- a/drivers/media/platform/omap3isp/isppreview.c
+++ b/drivers/media/platform/omap3isp/isppreview.c
@@ -1480,13 +1480,6 @@ static void preview_isr_buffer(struct isp_prev_device *prev)
struct isp_buffer *buffer;
int restart = 0;
- if (prev->input == PREVIEW_INPUT_MEMORY) {
- buffer = omap3isp_video_buffer_next(&prev->video_in);
- if (buffer != NULL)
- preview_set_inaddr(prev, buffer->dma);
- pipe->state |= ISP_PIPELINE_IDLE_INPUT;
- }
-
if (prev->output & PREVIEW_OUTPUT_MEMORY) {
buffer = omap3isp_video_buffer_next(&prev->video_out);
if (buffer != NULL) {
@@ -1496,6 +1489,13 @@ static void preview_isr_buffer(struct isp_prev_device *prev)
pipe->state |= ISP_PIPELINE_IDLE_OUTPUT;
}
+ if (prev->input == PREVIEW_INPUT_MEMORY) {
+ buffer = omap3isp_video_buffer_next(&prev->video_in);
+ if (buffer != NULL)
+ preview_set_inaddr(prev, buffer->dma);
+ pipe->state |= ISP_PIPELINE_IDLE_INPUT;
+ }
+
switch (prev->state) {
case ISP_PIPELINE_STREAM_SINGLESHOT:
if (isp_pipeline_ready(pipe))
--
2.1.4
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH 1/1] omap3isp: preview: Mark output buffer done first
2015-11-10 23:34 [PATCH 1/1] omap3isp: preview: Mark output buffer done first Sakari Ailus
@ 2015-11-11 22:35 ` Laurent Pinchart
0 siblings, 0 replies; 2+ messages in thread
From: Laurent Pinchart @ 2015-11-11 22:35 UTC (permalink / raw)
To: Sakari Ailus; +Cc: linux-media
Hi Sakari,
Thank you for the patch.
On Wednesday 11 November 2015 01:34:18 Sakari Ailus wrote:
> The sequence number counter is incremented on each output buffer, and that
> incremented value is used as the sequence number of that buffer. The input
> buffer sequence numbering is based just on reading the same counter. If
> the input buffer is marked done first, its sequence number ends up being
> that of the output buffer - 1.
>
> This is how the resizer works as well.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
I'm always wary when touching interrupt handling in the omap3isp driver, but
this change really looks correct and harmless.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
and applied to my tree.
> ---
> drivers/media/platform/omap3isp/isppreview.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/platform/omap3isp/isppreview.c
> b/drivers/media/platform/omap3isp/isppreview.c index cfb2debb..1478076
> 100644
> --- a/drivers/media/platform/omap3isp/isppreview.c
> +++ b/drivers/media/platform/omap3isp/isppreview.c
> @@ -1480,13 +1480,6 @@ static void preview_isr_buffer(struct isp_prev_device
> *prev) struct isp_buffer *buffer;
> int restart = 0;
>
> - if (prev->input == PREVIEW_INPUT_MEMORY) {
> - buffer = omap3isp_video_buffer_next(&prev->video_in);
> - if (buffer != NULL)
> - preview_set_inaddr(prev, buffer->dma);
> - pipe->state |= ISP_PIPELINE_IDLE_INPUT;
> - }
> -
> if (prev->output & PREVIEW_OUTPUT_MEMORY) {
> buffer = omap3isp_video_buffer_next(&prev->video_out);
> if (buffer != NULL) {
> @@ -1496,6 +1489,13 @@ static void preview_isr_buffer(struct isp_prev_device
> *prev) pipe->state |= ISP_PIPELINE_IDLE_OUTPUT;
> }
>
> + if (prev->input == PREVIEW_INPUT_MEMORY) {
> + buffer = omap3isp_video_buffer_next(&prev->video_in);
> + if (buffer != NULL)
> + preview_set_inaddr(prev, buffer->dma);
> + pipe->state |= ISP_PIPELINE_IDLE_INPUT;
> + }
> +
> switch (prev->state) {
> case ISP_PIPELINE_STREAM_SINGLESHOT:
> if (isp_pipeline_ready(pipe))
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-11-11 22:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-10 23:34 [PATCH 1/1] omap3isp: preview: Mark output buffer done first Sakari Ailus
2015-11-11 22:35 ` Laurent Pinchart
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox