media: renesas: vsp1: Drop custom .get_fmt() handler for histogram
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Sun, 12 Nov 2023 02:14:05 +0000 (04:14 +0200)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 19 Jun 2024 22:36:47 +0000 (01:36 +0300)
The histogram module is the only one that has a custom .get_fmt()
handler, to handle the special case of the output format being fixed.
This can equally well be handled in the .set_fmt() handler instead.
Beside avoiding special cases and using the same .get_fmt() handler in
all modules, it ensures that the correct format is stored in the active
state for the source pad, including when .set_fmt() is called from
vsp1_entity_init_state(). Both are needed to later switch to the V4L2
subdev active state API.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi+renesas@ideasonboard.com>
drivers/media/platform/renesas/vsp1/vsp1_histo.c

index 85d2fc538327dca88f8b583509013e7b27a2e860..9c2d4c91bfadb8f19773fca511014c29f326c41d 100644 (file)
@@ -352,31 +352,22 @@ done:
        return ret;
 }
 
-static int histo_get_format(struct v4l2_subdev *subdev,
+static int histo_set_format(struct v4l2_subdev *subdev,
                            struct v4l2_subdev_state *sd_state,
                            struct v4l2_subdev_format *fmt)
 {
+       struct vsp1_histogram *histo = subdev_to_histo(subdev);
+
        if (fmt->pad == HISTO_PAD_SOURCE) {
                fmt->format.code = MEDIA_BUS_FMT_FIXED;
                fmt->format.width = 0;
                fmt->format.height = 0;
                fmt->format.field = V4L2_FIELD_NONE;
                fmt->format.colorspace = V4L2_COLORSPACE_RAW;
+
                return 0;
        }
 
-       return vsp1_subdev_get_pad_format(subdev, sd_state, fmt);
-}
-
-static int histo_set_format(struct v4l2_subdev *subdev,
-                           struct v4l2_subdev_state *sd_state,
-                           struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_histogram *histo = subdev_to_histo(subdev);
-
-       if (fmt->pad != HISTO_PAD_SINK)
-               return histo_get_format(subdev, sd_state, fmt);
-
        return vsp1_subdev_set_pad_format(subdev, sd_state, fmt,
                                          histo->formats, histo->num_formats,
                                          HISTO_MIN_SIZE, HISTO_MIN_SIZE,
@@ -386,7 +377,7 @@ static int histo_set_format(struct v4l2_subdev *subdev,
 static const struct v4l2_subdev_pad_ops histo_pad_ops = {
        .enum_mbus_code = histo_enum_mbus_code,
        .enum_frame_size = histo_enum_frame_size,
-       .get_fmt = histo_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = histo_set_format,
        .get_selection = histo_get_selection,
        .set_selection = histo_set_selection,