From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
To: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Cc: "Jacopo Mondi" <jacopo.mondi@ideasonboard.com>,
tomm.merciai@gmail.com, linux-renesas-soc@vger.kernel.org,
biju.das.jz@bp.renesas.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>,
"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Sven Püschel" <s.pueschel@pengutronix.de>,
"Nas Chung" <nas.chung@chipsnmedia.com>,
"Mehdi Djait" <mehdi.djait@linux.intel.com>,
"Isaac Scott" <isaac.scott@ideasonboard.com>,
"Paul Cercueil" <paul@crapouillou.net>,
"Daniel Scally" <dan.scally+renesas@ideasonboard.com>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH v5 1/5] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement
Date: Fri, 31 Jul 2026 17:06:09 +0200 [thread overview]
Message-ID: <amy5wiOm3aZcqQFH@zed> (raw)
In-Reply-To: <amy3ffsibZKDv9QC@tom-desktop>
Hi Tommaso,
On Fri, Jul 31, 2026 at 04:55:57PM +0200, Tommaso Merciai wrote:
> Hi Jacopo,
> Thanks for your review.
>
> On Thu, Jul 30, 2026 at 09:50:35PM +0200, Jacopo Mondi wrote:
> > Hi Tommaso
> >
> > On Wed, Jul 29, 2026 at 12:55:46PM +0200, Tommaso Merciai wrote:
> > > The RZ/G3E CRU programs the line stride via the AMnIS register, whose
> > > IS field encodes the value in units of 128 bytes. If bytesperline is
> > > not a multiple of 128, the division truncates and the hardware uses a
> > > wrong stride, causing horizontal banding.
> > >
> > > Commit ace92ccef0c9 ("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()")
> > > replaced the open-coded aligned calculation with v4l2_fill_pixfmt(),
> > > which sets no alignment, reintroducing the issue.
> > >
> > > Round bytesperline up to RZG2L_CRU_STRIDE_ALIGN and recompute
> > > sizeimage when info->has_stride is set. RZ/G2L has no AMnIS register
> > > and keeps the values from v4l2_fill_pixfmt() unchanged.
> > >
> > > Fixes: ace92ccef0c9 ("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()")
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> > > ---
> > > v4->v5:
> > > - New patch.
> > >
> > > drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c | 5 +++++
> > > 1 file changed, 5 insertions(+)
> > >
> > > diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> > > index 5185a547461d..91eda5034248 100644
> > > --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> > > +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> > > @@ -851,6 +851,11 @@ static void rzg2l_cru_format_align(struct rzg2l_cru_dev *cru,
> > >
> > > v4l2_fill_pixfmt(pix, pix->pixelformat, pix->width, pix->height);
> > >
> > > + if (info->has_stride) {
> > > + pix->bytesperline = ALIGN(pix->bytesperline, RZG2L_CRU_STRIDE_ALIGN);
> > > + pix->sizeimage = pix->bytesperline * pix->height;
> > > + }
> > > +
> >
> > Ack! I think this does what is expected for the single planar formats
> > the CRU supports!
> >
> > I think after this cycle you could send a patch to replace the above
> > back-portable change with the usage of v4l2_fill_pixfmt_aligned().
>
> Ack but this is already done on PATCH 5/5 of this series ([1])
> Please correct me if I'm wrong.
>
Ah sorry, I completely missed that.
I'll review that one.
> >
> > When you do so, could you consider, replacing "has_stride" with a per
> > struct rzg2l_cru_info .stride field ?
> >
> > I think it would look nicer as you could here unconditionally align
> > (assuming the new .stride will be set to 1 for G2L which currently has
> > .has_stride = 0).
> >
> > Also, RZG2L_CRU_STRIDE_ALIGN is a bit of a mis-nomer, as only G3E and
> > V2H has a AMnIS register and alignments constraints as far as I see.
> >
> > The only other user of 'has_stride' I see is:
> >
> > rzg2l_cru_initialize_axi()
> >
> > if (info->has_stride) {
> > u32 stride = cru->format.bytesperline;
> > u32 amnis;
> >
> > stride /= RZG2L_CRU_STRIDE_ALIGN;
> > amnis = rzg2l_cru_read(cru, AMnIS) & ~AMnIS_IS_MASK;
> > rzg2l_cru_write(cru, AMnIS, amnis | AMnIS_IS(stride));
> > }
> >
> > the G2L has no register AMnIS, so we can't write it unconditionally
> > but rather replace the check with:
> >
> > if (info->stride > 1)
> >
> > As a bonus, if any other variant will get a different stride, it will
> > be automatically supported.
> >
> > What do you think ?
>
> Fully agree!
> I will post patches for this after this cycle, thanks.
Thank you!
>
> >
> > In the meantime for this patch
> > Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
>
> [1] https://patchwork.kernel.org/project/linux-renesas-soc/patch/20260729105603.1160966-6-tommaso.merciai.xr@bp.renesas.com/
>
> Kind Regards,
> Tommaso
>
> >
> > Thanks
> > j
> >
> >
> > > dev_dbg(cru->dev, "Format %ux%u bpl: %u size: %u\n",
> > > pix->width, pix->height, pix->bytesperline, pix->sizeimage);
> > > }
> > > --
> > > 2.54.0
> > >
> > >
next prev parent reply other threads:[~2026-07-31 15:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-29 10:55 [PATCH v5 0/5] media: rzg2l-cru: Fix DMA stride alignment Tommaso Merciai
2026-07-29 10:55 ` [PATCH v5 1/5] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement Tommaso Merciai
2026-07-30 19:50 ` Jacopo Mondi
2026-07-31 14:55 ` Tommaso Merciai
2026-07-31 15:06 ` Jacopo Mondi [this message]
2026-07-29 10:55 ` [PATCH v5 2/5] media: v4l2-common: Convert v4l2_fill_pixfmt_mp() to static inline wrapper Tommaso Merciai
2026-07-29 10:55 ` [PATCH v5 3/5] media: v4l2-common: Add v4l2_fill_pixfmt_aligned() helper Tommaso Merciai
2026-07-29 10:55 ` [PATCH v5 4/5] media: v4l2-common: Add kernel-doc for v4l2_fill_pixfmt_mp_aligned() Tommaso Merciai
2026-07-29 10:55 ` [PATCH v5 5/5] media: rzg2l-cru: Use v4l2_fill_pixfmt_aligned() for stride alignment Tommaso Merciai
2026-07-31 15:07 ` Jacopo Mondi
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=amy5wiOm3aZcqQFH@zed \
--to=jacopo.mondi@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=laurent.pinchart@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=nas.chung@chipsnmedia.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=stable@vger.kernel.org \
--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.