All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Cc: tomm.merciai@gmail.com, linux-renesas-soc@vger.kernel.org,
	biju.das.jz@bp.renesas.com, jacopo.mondi@ideasonboard.com,
	"Lad Prabhakar" <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Hans Verkuil" <hverkuil+cisco@kernel.org>,
	"Nicolas Dufresne" <nicolas.dufresne@collabora.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Sven Püschel" <s.pueschel@pengutronix.de>,
	"Mehdi Djait" <mehdi.djait@linux.intel.com>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Isaac Scott" <isaac.scott@ideasonboard.com>,
	"Daniel Scally" <dan.scally+renesas@ideasonboard.com>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] media: v4l2-common: add v4l2_fill_pixfmt_aligned() helper
Date: Thu, 25 Jun 2026 11:51:59 +0300	[thread overview]
Message-ID: <20260625085159.GP851255@killaraus.ideasonboard.com> (raw)
In-Reply-To: <ajzjAVM8F8ZPMWcy@tom-desktop>

On Thu, Jun 25, 2026 at 10:12:49AM +0200, Tommaso Merciai wrote:
> Hi Laurent,
> Thanks for your review.
> 
> On Wed, Jun 24, 2026 at 10:28:55PM +0300, Laurent Pinchart wrote:
> > Hi Tommaso,
> > 
> > Thank you for the patch.
> > 
> > On Wed, Jun 24, 2026 at 12:41:30PM +0200, Tommaso Merciai wrote:
> > > Add v4l2_fill_pixfmt_aligned(), a variant of v4l2_fill_pixfmt()
> > > that accepts a stride_alignment parameter, mirroring the existing
> > > v4l2_fill_pixfmt_mp() / v4l2_fill_pixfmt_mp_aligned() pair.
> > > 
> > > v4l2_fill_pixfmt() is refactored to call v4l2_fill_pixfmt_aligned()
> > > with stride_alignment=1, preserving its existing behaviour.
> > > 
> > > The new helper is needed by drivers whose DMA engine requires the
> > > line stride to be a multiple of a specific value, such as the
> > > Renesas RZ/G3E CRU which requires 128-byte alignment.
> > > 
> > > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> > > ---
> > >  drivers/media/v4l2-core/v4l2-common.c | 17 +++++++++++++----
> > >  include/media/v4l2-common.h           |  3 +++
> > >  2 files changed, 16 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
> > > index 65db7340ad38..1de246acc7ab 100644
> > > --- a/drivers/media/v4l2-core/v4l2-common.c
> > > +++ b/drivers/media/v4l2-core/v4l2-common.c
> > > @@ -545,8 +545,8 @@ int v4l2_fill_pixfmt_mp(struct v4l2_pix_format_mplane *pixfmt,
> > >  }
> > >  EXPORT_SYMBOL_GPL(v4l2_fill_pixfmt_mp);
> > >  
> > > -int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > > -		     u32 width, u32 height)
> > > +int v4l2_fill_pixfmt_aligned(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > > +			     u32 width, u32 height, u8 stride_alignment)
> > >  {
> > >  	const struct v4l2_format_info *info;
> > >  	int i;
> > > @@ -562,14 +562,23 @@ int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > >  	pixfmt->width = width;
> > >  	pixfmt->height = height;
> > >  	pixfmt->pixelformat = pixelformat;
> > > -	pixfmt->bytesperline = v4l2_format_plane_stride(info, 0, width, 1);
> > > +	pixfmt->bytesperline = v4l2_format_plane_stride(info, 0, width,
> > > +							stride_alignment);
> > >  	pixfmt->sizeimage = 0;
> > >  
> > >  	for (i = 0; i < info->comp_planes; i++)
> > >  		pixfmt->sizeimage +=
> > > -			v4l2_format_plane_size(info, i, width, height, 1);
> > > +			v4l2_format_plane_size(info, i, width, height,
> > > +					       stride_alignment);
> > >  	return 0;
> > >  }
> > > +EXPORT_SYMBOL_GPL(v4l2_fill_pixfmt_aligned);
> > > +
> > > +int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > > +		     u32 width, u32 height)
> > > +{
> > > +	return v4l2_fill_pixfmt_aligned(pixfmt, pixelformat, width, height, 1);
> > > +}
> > 
> > This could be an inline wrapper in include/media/v4l2-common.h, it would
> > be more efficient.
> 
> Ok, thanks.
> I guess we want the same for v4l2_fill_pixfmt_mp() ?

That would be nice, as a separate patch, if you have time.

> > >  EXPORT_SYMBOL_GPL(v4l2_fill_pixfmt);
> > >  
> > >  #ifdef CONFIG_MEDIA_CONTROLLER
> > > diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
> > > index edd416178c33..718a0f47f36b 100644
> > > --- a/include/media/v4l2-common.h
> > > +++ b/include/media/v4l2-common.h
> > > @@ -556,6 +556,9 @@ void v4l2_apply_frmsize_constraints(u32 *width, u32 *height,
> > >  				    const struct v4l2_frmsize_stepwise *frmsize);
> > >  int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > >  		     u32 width, u32 height);
> > > +/* @stride_alignment is a power of 2 value in bytes */
> > > +int v4l2_fill_pixfmt_aligned(struct v4l2_pix_format *pixfmt, u32 pixelformat,
> > > +			     u32 width, u32 height, u8 stride_alignment);
> > 
> > I know the existing functions lack documentation, but it's not a reason
> > to continue with that bad habit :-)
> 
> Ouch :)
> 
> > One point that needs to be clearly documented is how the stride
> > alignment is handled for different planes.
> 
> Thanks, I will add documentation in v2.
> 
> > >  int v4l2_fill_pixfmt_mp(struct v4l2_pix_format_mplane *pixfmt, u32 pixelformat,
> > >  			u32 width, u32 height);
> > >  /* @stride_alignment is a power of 2 value in bytes */

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2026-06-25  8:52 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-24 10:41 [PATCH 0/2] media: rzg2l-cru: Fix DMA stride alignment Tommaso Merciai
2026-06-24 10:41 ` [PATCH 1/2] media: v4l2-common: add v4l2_fill_pixfmt_aligned() helper Tommaso Merciai
2026-06-24 19:28   ` Laurent Pinchart
2026-06-25  8:12     ` Tommaso Merciai
2026-06-25  8:51       ` Laurent Pinchart [this message]
2026-06-24 10:41 ` [PATCH 2/2] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement Tommaso Merciai
2026-06-24 19:53   ` Laurent Pinchart
2026-06-25 11:01     ` Tommaso Merciai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260625085159.GP851255@killaraus.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=dan.scally+renesas@ideasonboard.com \
    --cc=hverkuil+cisco@kernel.org \
    --cc=isaac.scott@ideasonboard.com \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mehdi.djait@linux.intel.com \
    --cc=nicolas.dufresne@collabora.com \
    --cc=paul@crapouillou.net \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=s.pueschel@pengutronix.de \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomm.merciai@gmail.com \
    --cc=tommaso.merciai.xr@bp.renesas.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.