mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement
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. Commitace92ccef0("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:ace92ccef0("media: platform: rzg2l-cru: Use v4l2_fill_pixfmt()") Cc: stable@vger.kernel.org Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
This commit is contained in:
parent
abb1f808ce
commit
56c29fa3ee
|
|
@ -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;
|
||||
}
|
||||
|
||||
dev_dbg(cru->dev, "Format %ux%u bpl: %u size: %u\n",
|
||||
pix->width, pix->height, pix->bytesperline, pix->sizeimage);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user