For 8-bit formats the image_width just needs to be a multiple of 8 pixels others just a multiple of 4 pixels. Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> --- Changes in v3: * Fix commit message (Only 8-bit formats needs multiple of 8 pixels) drivers/media/platform/nxp/imx7-media-csi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/nxp/imx7-media-csi.c b/drivers/media/platform/nxp/imx7-media-csi.c index 1315f5743b76f..730c9c57bf4bc 100644 --- a/drivers/media/platform/nxp/imx7-media-csi.c +++ b/drivers/media/platform/nxp/imx7-media-csi.c @@ -1146,6 +1146,7 @@ __imx7_csi_video_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose) { const struct imx7_csi_pixfmt *cc; + u32 walign; if (compose) { compose->width = pixfmt->width; @@ -1162,13 +1163,19 @@ __imx7_csi_video_try_fmt(struct v4l2_pix_format *pixfmt, cc = imx7_csi_find_pixel_format(pixfmt->pixelformat); } + /* Refer to CSI_IMAG_PARA.IMAGE_WIDTH description */ + if (cc->bpp == 8) + walign = 8; + else + walign = 4; + /* * Round up width for minimum burst size. * * TODO: Implement configurable stride support, and check what the real * hardware alignment constraint on the width is. */ - v4l_bound_align_image(&pixfmt->width, 1, 0xffff, 8, + v4l_bound_align_image(&pixfmt->width, 1, 0xffff, walign, &pixfmt->height, 1, 0xffff, 1, 0); pixfmt->bytesperline = pixfmt->width * cc->bpp / 8; -- 2.34.1