media: atomisp: Remove redundant atomisp_subdev_set_selection() calls from atomisp_set_fmt()
atomisp_subdev_set_selection(sink-pad, V4L2_SEL_TGT_CROP, rect) ignores the passed in rect, using the width and height from the last atomisp_subdev_set_ffmt(ATOMISP_SUBDEV_PAD_SINK, ffmt) call instead. The atomisp_subdev_set_ffmt() call done by atomisp_set_fmt_to_snr() already propagates the sink ffmt changes to V4L2_SEL_TGT_CROP (this is what allows atomisp_set_fmt() to get the isp_sink_crop in the first place). Remove the redundant atomisp_subdev_set_selection(sink-pad, ...) calls. Note the removed aspect ratio correction in the last else block is is already done by atomisp_subdev_set_selection() itself when setting V4L2_SEL_TGT_COMPOSE on the source-pad. Link: https://lore.kernel.org/r/20230529103741.11904-9-hdegoede@redhat.com Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
503bf3090a
commit
af330c965f
@ -4327,12 +4327,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
|
||||
isp_sink_crop.width = f->fmt.pix.width;
|
||||
isp_sink_crop.height = f->fmt.pix.height;
|
||||
|
||||
atomisp_subdev_set_selection(&asd->subdev, fh.state,
|
||||
V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||
ATOMISP_SUBDEV_PAD_SINK,
|
||||
V4L2_SEL_TGT_CROP,
|
||||
V4L2_SEL_FLAG_KEEP_CONFIG,
|
||||
&isp_sink_crop);
|
||||
atomisp_subdev_set_selection(&asd->subdev, fh.state,
|
||||
V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||
ATOMISP_SUBDEV_PAD_SOURCE, V4L2_SEL_TGT_COMPOSE,
|
||||
@ -4358,38 +4352,11 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
|
||||
V4L2_SEL_TGT_COMPOSE, 0,
|
||||
&main_compose);
|
||||
} else {
|
||||
struct v4l2_rect sink_crop = {0};
|
||||
struct v4l2_rect main_compose = {0};
|
||||
|
||||
main_compose.width = f->fmt.pix.width;
|
||||
main_compose.height = f->fmt.pix.height;
|
||||
|
||||
/* WORKAROUND: this override is universally enabled in
|
||||
* GMIN to work around a CTS failures (GMINL-539)
|
||||
* which appears to be related by a hardware
|
||||
* performance limitation. It's unclear why this
|
||||
* particular code triggers the issue. */
|
||||
if (isp_sink_crop.width * main_compose.height >
|
||||
isp_sink_crop.height * main_compose.width) {
|
||||
sink_crop.height = isp_sink_crop.height;
|
||||
sink_crop.width =
|
||||
DIV_NEAREST_STEP(sink_crop.height * f->fmt.pix.width,
|
||||
f->fmt.pix.height,
|
||||
ATOM_ISP_STEP_WIDTH);
|
||||
} else {
|
||||
sink_crop.width = isp_sink_crop.width;
|
||||
sink_crop.height =
|
||||
DIV_NEAREST_STEP(sink_crop.width * f->fmt.pix.height,
|
||||
f->fmt.pix.width,
|
||||
ATOM_ISP_STEP_HEIGHT);
|
||||
}
|
||||
atomisp_subdev_set_selection(&asd->subdev, fh.state,
|
||||
V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||
ATOMISP_SUBDEV_PAD_SINK,
|
||||
V4L2_SEL_TGT_CROP,
|
||||
V4L2_SEL_FLAG_KEEP_CONFIG,
|
||||
&sink_crop);
|
||||
|
||||
atomisp_subdev_set_selection(&asd->subdev, fh.state,
|
||||
V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||
ATOMISP_SUBDEV_PAD_SOURCE,
|
||||
|
Loading…
x
Reference in New Issue
Block a user