Commit 4361af85 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

media: atomisp: Refactor atomisp_adjust_fmt()



Refactor atomisp_adjust_fmt():

1. The block starting at "format_bridge = atomisp_get_format_bridge(...)"
and ending with "if (field == V4L2_FIELD_ANY) field = V4L2_FIELD_NONE;"
is duplicated. With only the second block:
a) Properly checking that format_bridge is not NULL; amd
b) Having the special handling for IA_CSS_FRAME_FORMAT_RAW

Remove the first block.

2. On a NULL return from atomisp_get_format_bridge(f->fmt.pix.pixelformat)
fall back to V4L2_PIX_FMT_YUV420 just like in the IA_CSS_FRAME_FORMAT_RAW
case. atomisp_adjust_fmt() is used in VIDIOC_TRY_FMT handling and that
should jusy pick a fmt rather then returning -EINVAL.

Reviewed-by: default avatarAndy Shevchenko <andy@kernel.org>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 795ac295
Loading
Loading
Loading
Loading
+1 −22
Original line number Diff line number Diff line
@@ -878,29 +878,8 @@ static int atomisp_adjust_fmt(struct v4l2_format *f)
	u32 padded_width;

	format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);

	padded_width = f->fmt.pix.width + pad_w;

	if (format_bridge->planar) {
		f->fmt.pix.bytesperline = padded_width;
		f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height *
						  DIV_ROUND_UP(format_bridge->depth *
						  padded_width, 8));
	} else {
		f->fmt.pix.bytesperline = DIV_ROUND_UP(format_bridge->depth *
						      padded_width, 8);
		f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height * f->fmt.pix.bytesperline);
	}

	if (f->fmt.pix.field == V4L2_FIELD_ANY)
		f->fmt.pix.field = V4L2_FIELD_NONE;

	format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
	if (!format_bridge)
		return -EINVAL;

	/* Currently, raw formats are broken!!! */
	if (format_bridge->sh_fmt == IA_CSS_FRAME_FORMAT_RAW) {
	if (!format_bridge || format_bridge->sh_fmt == IA_CSS_FRAME_FORMAT_RAW) {
		f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;

		format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);