From a4f6c3f71d461b4f9d5ea7ba67ded37d687c6bae Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 20 Aug 2024 17:05:37 +0800 Subject: [PATCH] media: rockchip: isp: support bytesperline set by user for rawrd video Change-Id: I8b3587dca548da163ae865221e706091223063fb Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/dmarx.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/dmarx.c b/drivers/media/platform/rockchip/isp/dmarx.c index 77be7e0b439c..22691b78f289 100644 --- a/drivers/media/platform/rockchip/isp/dmarx.c +++ b/drivers/media/platform/rockchip/isp/dmarx.c @@ -843,10 +843,23 @@ static int rkisp_set_fmt(struct rkisp_stream *stream, if (stream->ispdev->vicap_in.merge_num > 1) bytesperline *= stream->ispdev->vicap_in.merge_num; - - if (i != 0 || - plane_fmt->bytesperline < bytesperline) - plane_fmt->bytesperline = bytesperline; + /* bytesperline from user */ + if (plane_fmt->bytesperline) { + bytesperline = width * fmt->bpp[i] / 8; + if (plane_fmt->bytesperline < bytesperline) { + bytesperline = ALIGN(bytesperline, 4); + v4l2_err(&stream->ispdev->v4l2_dev, + "rawrd bytesperline:%d error, force to %d\n", + plane_fmt->bytesperline, bytesperline); + } else { + bytesperline = ALIGN(plane_fmt->bytesperline, 4); + if (bytesperline != plane_fmt->bytesperline) + v4l2_err(&stream->ispdev->v4l2_dev, + "rawrd bytesperline need 4 align, force to %d\n", + bytesperline); + } + } + plane_fmt->bytesperline = bytesperline; plane_fmt->sizeimage = plane_fmt->bytesperline * height;