media: atomisp: Remove redundant atomisp_subdev_set_selection() calls from atomisp_se...
authorHans de Goede <hdegoede@redhat.com>
Mon, 29 May 2023 10:37:28 +0000 (11:37 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 9 Jun 2023 14:27:34 +0000 (15:27 +0100)
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>
drivers/staging/media/atomisp/pci/atomisp_cmd.c

index 748cb78..36618d2 100644 (file)
@@ -4329,12 +4329,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
 
                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,
                                             0, &isp_sink_crop);
        } else if (IS_MOFD) {
@@ -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,