public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage
@ 2026-03-11  8:02 Guoniu Zhou
  2026-03-11  8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
  2026-03-11  8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou
  0 siblings, 2 replies; 9+ messages in thread
From: Guoniu Zhou @ 2026-03-11  8:02 UTC (permalink / raw)
  To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam
  Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger,
	Guoniu Zhou

This series fixes a hang issue when capturing single frames and improves
buffer utilization by prioritizing user buffers over discard buffers.

Patch 1 reduces min_queued_buffers to allow streaming with a single buffer,
fixing hangs in applications like libcamera's cam tool.

Patch 2 changes the buffer selection logic to use pending user buffers first,
minimizing unnecessary frame drops at stream start.

Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
---
Guoniu Zhou (2):
      media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
      media: nxp: imx8-isi: Prioritize pending buffers over discard buffers

 drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
---
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
change-id: 20260310-isi_min_buffers-4b490a124223

Best regards,
-- 
Guoniu Zhou <guoniu.zhou@nxp.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
  2026-03-11  8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou
@ 2026-03-11  8:02 ` Guoniu Zhou
  2026-03-11 12:50   ` Jacopo Mondi
  2026-03-11 15:22   ` Frank Li
  2026-03-11  8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou
  1 sibling, 2 replies; 9+ messages in thread
From: Guoniu Zhou @ 2026-03-11  8:02 UTC (permalink / raw)
  To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam
  Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger,
	Guoniu Zhou

From: Guoniu Zhou <guoniu.zhou@nxp.com>

Fix a hang issue when capturing a single frame with applications like cam
in libcamera. It would hang waiting for the driver to complete the buffer,
but streaming never starts because min_queued_buffers was set to 2.

The ISI module uses a ping-pong buffer mechanism that requires two buffers
to be programmed at all times. However, when fewer than 2 user buffers are
available, the driver use internal discard buffers to fill the remaining
slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to
start with a single buffer providing more flexibility for applications.

Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
---
 drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
@@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe,
 	q->mem_ops = &vb2_dma_contig_memops;
 	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
 	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
-	q->min_queued_buffers = 2;
+	q->min_queued_buffers = 1;
 	q->lock = &video->lock;
 	q->dev = pipe->isi->dev;
 

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers
  2026-03-11  8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou
  2026-03-11  8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
@ 2026-03-11  8:02 ` Guoniu Zhou
  2026-03-11 15:33   ` Frank Li
  1 sibling, 1 reply; 9+ messages in thread
From: Guoniu Zhou @ 2026-03-11  8:02 UTC (permalink / raw)
  To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam
  Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger,
	Guoniu Zhou

From: Guoniu Zhou <guoniu.zhou@nxp.com>

Change the buffer selection logic to use pending buffers first (up to the
number available), and only use discard buffers to fill remaining slots
when insufficient pending buffers are queued. This ensures user buffers
are utilized as soon as possible, improving efficiency and reducing the
number of discarded frames at stream start.

For example:
- 2 pending buffers: both slots use pending buffers
- 1 pending buffer: first slot uses pending, second uses discard
- 0 pending buffers: both slots use discard buffers

Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
---
 drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
index 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372294ee569f40a8ae6 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
@@ -786,13 +786,14 @@ static void mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video)
 		: list_is_singular(&video->out_pending) ? 1
 		: 0;
 
+	/* Queue buffers: prioritize pending buffers, then discard buffers */
 	for (i = 0; i < 2; ++i) {
 		enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1
 					   : MXC_ISI_BUF2;
 		struct mxc_isi_buffer *buf;
 		struct list_head *list;
 
-		list = i < discard ? &video->out_discard : &video->out_pending;
+		list = (i < 2 - discard) ? &video->out_pending : &video->out_discard;
 		buf = list_first_entry(list, struct mxc_isi_buffer, list);
 
 		mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs, buf_id);

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
  2026-03-11  8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
@ 2026-03-11 12:50   ` Jacopo Mondi
  2026-03-12  2:21     ` G.N. Zhou (OSS)
  2026-03-11 15:22   ` Frank Li
  1 sibling, 1 reply; 9+ messages in thread
From: Jacopo Mondi @ 2026-03-11 12:50 UTC (permalink / raw)
  To: Guoniu Zhou
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, linux-media, imx,
	linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou

Hello Guoniu

On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote:
> From: Guoniu Zhou <guoniu.zhou@nxp.com>
>
> Fix a hang issue when capturing a single frame with applications like cam
> in libcamera. It would hang waiting for the driver to complete the buffer,
> but streaming never starts because min_queued_buffers was set to 2.
>
> The ISI module uses a ping-pong buffer mechanism that requires two buffers
> to be programmed at all times. However, when fewer than 2 user buffers are
> available, the driver use internal discard buffers to fill the remaining
> slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to

Does it mean the ISI can use internal buffer discard for both buffer
slots ? Can we make min_queued_buffers == 0 ?

> start with a single buffer providing more flexibility for applications.
>
> Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> ---
>  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644
> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe,
>  	q->mem_ops = &vb2_dma_contig_memops;
>  	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
>  	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> -	q->min_queued_buffers = 2;
> +	q->min_queued_buffers = 1;
>  	q->lock = &video->lock;
>  	q->dev = pipe->isi->dev;
>
>
> --
> 2.34.1
>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
  2026-03-11  8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
  2026-03-11 12:50   ` Jacopo Mondi
@ 2026-03-11 15:22   ` Frank Li
  2026-03-12  2:22     ` G.N. Zhou (OSS)
  1 sibling, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-03-11 15:22 UTC (permalink / raw)
  To: Guoniu Zhou
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, linux-media, imx,
	linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou

On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote:
> From: Guoniu Zhou <guoniu.zhou@nxp.com>
>
> Fix a hang issue when capturing a single frame with applications like cam
> in libcamera. It would hang waiting for the driver to complete the buffer,
> but streaming never starts because min_queued_buffers was set to 2.
>
> The ISI module uses a ping-pong buffer mechanism that requires two buffers
> to be programmed at all times. However, when fewer than 2 user buffers are
> available, the driver use internal discard buffers to fill the remaining
> slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to
> start with a single buffer providing more flexibility for applications.
>

Fix tags?

Frank

> Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> ---
>  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644
> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe,
>  	q->mem_ops = &vb2_dma_contig_memops;
>  	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
>  	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> -	q->min_queued_buffers = 2;
> +	q->min_queued_buffers = 1;
>  	q->lock = &video->lock;
>  	q->dev = pipe->isi->dev;
>
>
> --
> 2.34.1
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers
  2026-03-11  8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou
@ 2026-03-11 15:33   ` Frank Li
  2026-03-12  2:29     ` G.N. Zhou (OSS)
  0 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-03-11 15:33 UTC (permalink / raw)
  To: Guoniu Zhou
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, linux-media, imx,
	linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou

On Wed, Mar 11, 2026 at 04:02:59PM +0800, Guoniu Zhou wrote:
> From: Guoniu Zhou <guoniu.zhou@nxp.com>
>
> Change the buffer selection logic to use pending buffers first (up to the
> number available), and only use discard buffers to fill remaining slots
> when insufficient pending buffers are queued. This ensures user buffers

Nit: Ensure user ...

> are utilized as soon as possible, improving efficiency and reducing the
> number of discarded frames at stream start.
>
> For example:
> - 2 pending buffers: both slots use pending buffers
> - 1 pending buffer: first slot uses pending, second uses discard
> - 0 pending buffers: both slots use discard buffers
>
> Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> ---
>  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> index 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372294ee569f40a8ae6 100644
> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> @@ -786,13 +786,14 @@ static void mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video)
>  		: list_is_singular(&video->out_pending) ? 1
>  		: 0;
>
> +	/* Queue buffers: prioritize pending buffers, then discard buffers */
>  	for (i = 0; i < 2; ++i) {
>  		enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1
>  					   : MXC_ISI_BUF2;
>  		struct mxc_isi_buffer *buf;
>  		struct list_head *list;
>
> -		list = i < discard ? &video->out_discard : &video->out_pending;
> +		list = (i < 2 - discard) ? &video->out_pending : &video->out_discard;

Is (2 - discard) the number of pending buffers? put commit's example as
comments here.

Frank

>  		buf = list_first_entry(list, struct mxc_isi_buffer, list);
>
>  		mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs, buf_id);
>
> --
> 2.34.1
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
  2026-03-11 12:50   ` Jacopo Mondi
@ 2026-03-12  2:21     ` G.N. Zhou (OSS)
  0 siblings, 0 replies; 9+ messages in thread
From: G.N. Zhou (OSS) @ 2026-03-12  2:21 UTC (permalink / raw)
  To: Jacopo Mondi, G.N. Zhou (OSS)
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam,
	linux-media@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou

Hi Jacopo,

Thanks for your review.

> -----Original Message-----
> From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> Sent: Wednesday, March 11, 2026 8:51 PM
> To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho
> Chehab <mchehab@kernel.org>; Frank Li <frank.li@nxp.com>; Sascha Hauer
> <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; linux-
> media@vger.kernel.org; imx@lists.linux.dev; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi Birlinger
> <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com>
> Subject: Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers
> from 2 to 1
> 
> Hello Guoniu
> 
> On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote:
> > From: Guoniu Zhou <guoniu.zhou@nxp.com>
> >
> > Fix a hang issue when capturing a single frame with applications like
> > cam in libcamera. It would hang waiting for the driver to complete the
> > buffer, but streaming never starts because min_queued_buffers was set to 2.
> >
> > The ISI module uses a ping-pong buffer mechanism that requires two
> > buffers to be programmed at all times. However, when fewer than 2 user
> > buffers are available, the driver use internal discard buffers to fill
> > the remaining slot(s). Reduce minimum queued buffers from 2 to 1
> > allows streaming to
> 
> Does it mean the ISI can use internal buffer discard for both buffer slots ? Can
> we make min_queued_buffers == 0 ?

Yes, will update in next version.

> 
> > start with a single buffer providing more flexibility for applications.
> >
> > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> > ---
> >  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > index
> >
> 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b3492
> 3431
> > 3c5e103b7802 100644
> > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe
> *pipe,
> >  	q->mem_ops = &vb2_dma_contig_memops;
> >  	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
> >  	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> > -	q->min_queued_buffers = 2;
> > +	q->min_queued_buffers = 1;
> >  	q->lock = &video->lock;
> >  	q->dev = pipe->isi->dev;
> >
> >
> > --
> > 2.34.1
> >
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
  2026-03-11 15:22   ` Frank Li
@ 2026-03-12  2:22     ` G.N. Zhou (OSS)
  0 siblings, 0 replies; 9+ messages in thread
From: G.N. Zhou (OSS) @ 2026-03-12  2:22 UTC (permalink / raw)
  To: Frank Li, G.N. Zhou (OSS)
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam,
	linux-media@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou

Hi Frank,

Thanks for your review.

> -----Original Message-----
> From: Frank Li <frank.li@nxp.com>
> Sent: Wednesday, March 11, 2026 11:22 PM
> To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho
> Chehab <mchehab@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam
> <festevam@gmail.com>; linux-media@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi
> Birlinger <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com>
> Subject: Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers
> from 2 to 1
> 
> On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote:
> > From: Guoniu Zhou <guoniu.zhou@nxp.com>
> >
> > Fix a hang issue when capturing a single frame with applications like
> > cam in libcamera. It would hang waiting for the driver to complete the
> > buffer, but streaming never starts because min_queued_buffers was set to 2.
> >
> > The ISI module uses a ping-pong buffer mechanism that requires two
> > buffers to be programmed at all times. However, when fewer than 2 user
> > buffers are available, the driver use internal discard buffers to fill
> > the remaining slot(s). Reduce minimum queued buffers from 2 to 1
> > allows streaming to start with a single buffer providing more flexibility for
> applications.
> >
> 
> Fix tags?

Okay, will add in next version.

> 
> Frank
> 
> > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> > ---
> >  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > index
> >
> 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b3492
> 3431
> > 3c5e103b7802 100644
> > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe
> *pipe,
> >  	q->mem_ops = &vb2_dma_contig_memops;
> >  	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
> >  	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> > -	q->min_queued_buffers = 2;
> > +	q->min_queued_buffers = 1;
> >  	q->lock = &video->lock;
> >  	q->dev = pipe->isi->dev;
> >
> >
> > --
> > 2.34.1
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers
  2026-03-11 15:33   ` Frank Li
@ 2026-03-12  2:29     ` G.N. Zhou (OSS)
  0 siblings, 0 replies; 9+ messages in thread
From: G.N. Zhou (OSS) @ 2026-03-12  2:29 UTC (permalink / raw)
  To: Frank Li, G.N. Zhou (OSS)
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam,
	linux-media@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou

Hi Frank,

Thanks for your review.

> -----Original Message-----
> From: Frank Li <frank.li@nxp.com>
> Sent: Wednesday, March 11, 2026 11:34 PM
> To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho
> Chehab <mchehab@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam
> <festevam@gmail.com>; linux-media@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi
> Birlinger <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com>
> Subject: Re: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over
> discard buffers
> 
> On Wed, Mar 11, 2026 at 04:02:59PM +0800, Guoniu Zhou wrote:
> > From: Guoniu Zhou <guoniu.zhou@nxp.com>
> >
> > Change the buffer selection logic to use pending buffers first (up to
> > the number available), and only use discard buffers to fill remaining
> > slots when insufficient pending buffers are queued. This ensures user
> > buffers
> 
> Nit: Ensure user ...

Will update.

> 
> > are utilized as soon as possible, improving efficiency and reducing
> > the number of discarded frames at stream start.
> >
> > For example:
> > - 2 pending buffers: both slots use pending buffers
> > - 1 pending buffer: first slot uses pending, second uses discard
> > - 0 pending buffers: both slots use discard buffers
> >
> > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
> > ---
> >  drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > index
> >
> 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372
> 294e
> > e569f40a8ae6 100644
> > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c
> > @@ -786,13 +786,14 @@ static void
> mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video)
> >  		: list_is_singular(&video->out_pending) ? 1
> >  		: 0;
> >
> > +	/* Queue buffers: prioritize pending buffers, then discard buffers
> > +*/
> >  	for (i = 0; i < 2; ++i) {
> >  		enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1
> >  					   : MXC_ISI_BUF2;
> >  		struct mxc_isi_buffer *buf;
> >  		struct list_head *list;
> >
> > -		list = i < discard ? &video->out_discard : &video->out_pending;
> > +		list = (i < 2 - discard) ? &video->out_pending :
> > +&video->out_discard;
> 
> Is (2 - discard) the number of pending buffers? put commit's example as
> comments here.

Yes, will update in next version.

> 
> Frank
> 
> >  		buf = list_first_entry(list, struct mxc_isi_buffer, list);
> >
> >  		mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs,
> buf_id);
> >
> > --
> > 2.34.1
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-03-12  2:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-11  8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou
2026-03-11  8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
2026-03-11 12:50   ` Jacopo Mondi
2026-03-12  2:21     ` G.N. Zhou (OSS)
2026-03-11 15:22   ` Frank Li
2026-03-12  2:22     ` G.N. Zhou (OSS)
2026-03-11  8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou
2026-03-11 15:33   ` Frank Li
2026-03-12  2:29     ` G.N. Zhou (OSS)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox