* [PATCH v2 4/4] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement [not found] <20260701165003.1495035-1-tommaso.merciai.xr@bp.renesas.com> @ 2026-07-01 16:50 ` Tommaso Merciai 2026-07-28 13:08 ` Sakari Ailus 0 siblings, 1 reply; 3+ messages in thread From: Tommaso Merciai @ 2026-07-01 16:50 UTC (permalink / raw) To: tomm.merciai Cc: linux-renesas-soc, biju.das.jz, Tommaso Merciai, Lad Prabhakar, Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, Nicolas Dufresne, Laurent Pinchart, Sakari Ailus, Mehdi Djait, Sven Püschel, Nas Chung, Isaac Scott, Paul Cercueil, Daniel Scally, linux-media, linux-kernel, Laurent Pinchart, stable 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. Switch to v4l2_fill_pixfmt_aligned() with RZG2L_CRU_STRIDE_ALIGN when info->has_stride is set. RZ/G2L has no AMnIS register and keeps using v4l2_fill_pixfmt() unchanged. Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Cc: stable@vger.kernel.org Fixes: ace92ccef0c9 ("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()") Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com> --- v1->v2: - Collected tag - Add missing Cc stable - Fix s/commit/Commit/ into commit body drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c index 69346a585f9f..478264f26466 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c @@ -860,7 +860,8 @@ static void rzg2l_cru_format_align(struct rzg2l_cru_dev *cru, v4l_bound_align_image(&pix->width, 320, info->max_width, 1, &pix->height, 240, info->max_height, 0, 0); - v4l2_fill_pixfmt(pix, pix->pixelformat, pix->width, pix->height); + v4l2_fill_pixfmt_aligned(pix, pix->pixelformat, pix->width, pix->height, + info->has_stride ? RZG2L_CRU_STRIDE_ALIGN : 1); dev_dbg(cru->dev, "Format %ux%u bpl: %u size: %u\n", pix->width, pix->height, pix->bytesperline, pix->sizeimage); -- 2.54.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 4/4] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement 2026-07-01 16:50 ` [PATCH v2 4/4] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement Tommaso Merciai @ 2026-07-28 13:08 ` Sakari Ailus 2026-07-28 14:52 ` Tommaso Merciai 0 siblings, 1 reply; 3+ messages in thread From: Sakari Ailus @ 2026-07-28 13:08 UTC (permalink / raw) To: Tommaso Merciai Cc: tomm.merciai, linux-renesas-soc, biju.das.jz, Lad Prabhakar, Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, Nicolas Dufresne, Laurent Pinchart, Mehdi Djait, Sven Püschel, Nas Chung, Isaac Scott, Paul Cercueil, Daniel Scally, linux-media, linux-kernel, Laurent Pinchart, stable Hi Tommaso, On Wed, Jul 01, 2026 at 06:50:01PM +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. > > Switch to v4l2_fill_pixfmt_aligned() with RZG2L_CRU_STRIDE_ALIGN when > info->has_stride is set. RZ/G2L has no AMnIS register and keeps using > v4l2_fill_pixfmt() unchanged. > > Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > Cc: stable@vger.kernel.org > Fixes: ace92ccef0c9 ("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()") > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com> > --- > v1->v2: > - Collected tag > - Add missing Cc stable The problem with this is that it requires v4l2_fill_pixfmt_aligned() that's not Cc'd to stable. Can this be fixed first without introducing the use of v4l2_fill_pixfmt_aligned() (cc'd to stable, i.e. in this patch), followed by another one switching to v4l2_fill_pixfmt_aligned()? > - Fix s/commit/Commit/ into commit body > > drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > index 69346a585f9f..478264f26466 100644 > --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > @@ -860,7 +860,8 @@ static void rzg2l_cru_format_align(struct rzg2l_cru_dev *cru, > v4l_bound_align_image(&pix->width, 320, info->max_width, 1, > &pix->height, 240, info->max_height, 0, 0); > > - v4l2_fill_pixfmt(pix, pix->pixelformat, pix->width, pix->height); > + v4l2_fill_pixfmt_aligned(pix, pix->pixelformat, pix->width, pix->height, > + info->has_stride ? RZG2L_CRU_STRIDE_ALIGN : 1); > > dev_dbg(cru->dev, "Format %ux%u bpl: %u size: %u\n", > pix->width, pix->height, pix->bytesperline, pix->sizeimage); -- Regards, Sakari Ailus ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 4/4] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement 2026-07-28 13:08 ` Sakari Ailus @ 2026-07-28 14:52 ` Tommaso Merciai 0 siblings, 0 replies; 3+ messages in thread From: Tommaso Merciai @ 2026-07-28 14:52 UTC (permalink / raw) To: Sakari Ailus Cc: tomm.merciai, linux-renesas-soc, biju.das.jz, Lad Prabhakar, Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, Nicolas Dufresne, Laurent Pinchart, Mehdi Djait, Sven Püschel, Nas Chung, Isaac Scott, Paul Cercueil, Daniel Scally, linux-media, linux-kernel, Laurent Pinchart, stable Hi Sakari, Thanks for your review. On Tue, Jul 28, 2026 at 04:08:31PM +0300, Sakari Ailus wrote: > Hi Tommaso, > > On Wed, Jul 01, 2026 at 06:50:01PM +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. > > > > Switch to v4l2_fill_pixfmt_aligned() with RZG2L_CRU_STRIDE_ALIGN when > > info->has_stride is set. RZ/G2L has no AMnIS register and keeps using > > v4l2_fill_pixfmt() unchanged. > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > > Cc: stable@vger.kernel.org > > Fixes: ace92ccef0c9 ("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()") > > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com> > > --- > > v1->v2: > > - Collected tag > > - Add missing Cc stable > > The problem with this is that it requires v4l2_fill_pixfmt_aligned() that's > not Cc'd to stable. Can this be fixed first without introducing the use of > v4l2_fill_pixfmt_aligned() (cc'd to stable, i.e. in this patch), followed > by another one switching to v4l2_fill_pixfmt_aligned()? Ok. I will send add to v5 series before [1] a patch that fixes this without introducing the use of v4l2_fill_pixfmt_aligned() this I think can be done using: 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; + } + Then I rework this patch into: media: rzg2l-cru: Use v4l2_fill_pixfmt_aligned() for stride alignment That just use the newly added v4l2_fill_pixfmt_aligned() as you suggest. [1] https://patchwork.kernel.org/project/linux-renesas-soc/patch/20260713080259.21835-5-tommaso.merciai.xr@bp.renesas.com/ Kind Regards, Tommaso > > > - Fix s/commit/Commit/ into commit body > > > > drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > > index 69346a585f9f..478264f26466 100644 > > --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > > +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c > > @@ -860,7 +860,8 @@ static void rzg2l_cru_format_align(struct rzg2l_cru_dev *cru, > > v4l_bound_align_image(&pix->width, 320, info->max_width, 1, > > &pix->height, 240, info->max_height, 0, 0); > > > > - v4l2_fill_pixfmt(pix, pix->pixelformat, pix->width, pix->height); > > + v4l2_fill_pixfmt_aligned(pix, pix->pixelformat, pix->width, pix->height, > > + info->has_stride ? RZG2L_CRU_STRIDE_ALIGN : 1); > > > > dev_dbg(cru->dev, "Format %ux%u bpl: %u size: %u\n", > > pix->width, pix->height, pix->bytesperline, pix->sizeimage); > > -- > Regards, > > Sakari Ailus ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-28 14:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260701165003.1495035-1-tommaso.merciai.xr@bp.renesas.com>
2026-07-01 16:50 ` [PATCH v2 4/4] media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement Tommaso Merciai
2026-07-28 13:08 ` Sakari Ailus
2026-07-28 14:52 ` Tommaso Merciai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox