summaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch')
-rw-r--r--target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch104
1 files changed, 0 insertions, 104 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch b/target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch
deleted file mode 100644
index 202fe2946d..0000000000
--- a/target/linux/bcm27xx/patches-6.1/950-1205-media-rp1-fe-Fix-pisp_fe_pad_set_fmt.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 214e8134842a338215831f2efa6d730f413c5ec4 Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
-Date: Fri, 29 Sep 2023 17:15:20 +0300
-Subject: [PATCH] media: rp1: fe: Fix pisp_fe_pad_set_fmt()
-
-pisp_fe_pad_set_fmt() allows setting the pad formats quite freely. This
-is not correct, and the function should only allow formats as supported
-by the hardware. Fix this by:
-
-Allow no format changes for FE_CONFIG_PAD and FE_STATS_PAD. They should
-always be the hardcoded initial ones.
-
-Allow setting FE_STREAM_PAD freely (but the mbus code must be
-supported), and propagate the format to the FE_OUTPUT0_PAD and
-FE_OUTPUT1_PAD pads.
-
-Allow changing the mbus code for FE_OUTPUT0_PAD and FE_OUTPUT1_PAD pads
-only if the mbus code is the compressed version of the sink side code.
-
-TODO: FE supports scaling and cropping. This should be represented here
-too?
-
-Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
----
- .../platform/raspberrypi/rp1_cfe/pisp_fe.c | 59 +++++++++++++++----
- 1 file changed, 48 insertions(+), 11 deletions(-)
-
---- a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
-+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
-@@ -433,26 +433,63 @@ static int pisp_fe_pad_set_fmt(struct v4
-
- switch (format->pad) {
- case FE_STREAM_PAD:
-- case FE_OUTPUT0_PAD:
-- case FE_OUTPUT1_PAD:
- cfe_fmt = find_format_by_code(format->format.code);
- if (!cfe_fmt || !(cfe_fmt->flags & CFE_FORMAT_FLAG_FE_OUT))
- cfe_fmt = find_format_by_code(MEDIA_BUS_FMT_SRGGB16_1X16);
-
- format->format.code = cfe_fmt->code;
-+ format->format.field = V4L2_FIELD_NONE;
-
-- break;
-+ fmt = v4l2_subdev_get_pad_format(sd, state, FE_STREAM_PAD);
-+ *fmt = format->format;
-
-- case FE_STATS_PAD:
-- case FE_CONFIG_PAD:
-- format->format.code = MEDIA_BUS_FMT_FIXED;
-- break;
-- }
-+ fmt = v4l2_subdev_get_pad_format(sd, state, FE_OUTPUT0_PAD);
-+ *fmt = format->format;
-+
-+ fmt = v4l2_subdev_get_pad_format(sd, state, FE_OUTPUT1_PAD);
-+ *fmt = format->format;
-+
-+ return 0;
-
-- fmt = v4l2_subdev_get_pad_format(sd, state, format->pad);
-- *fmt = format->format;
-+ case FE_OUTPUT0_PAD:
-+ case FE_OUTPUT1_PAD: {
-+ /*
-+ * TODO: we should allow scaling and cropping by allowing the
-+ * user to set the size here.
-+ */
-+ struct v4l2_mbus_framefmt *sink_fmt, *source_fmt;
-+ u32 sink_code;
-+ u32 code;
-+
-+ sink_fmt = v4l2_subdev_get_pad_format(sd, state, FE_STREAM_PAD);
-+ if (!sink_fmt)
-+ return -EINVAL;
-+
-+ source_fmt = v4l2_subdev_get_pad_format(sd, state, format->pad);
-+ if (!source_fmt)
-+ return -EINVAL;
-+
-+ sink_code = sink_fmt->code;
-+ code = format->format.code;
-+
-+ /*
-+ * If the source code from the user does not match the code in
-+ * the sink pad, check that the source code matches the
-+ * compressed version of the sink code.
-+ */
-+
-+ if (code != sink_code &&
-+ code == cfe_find_compressed_code(sink_code))
-+ source_fmt->code = code;
-+
-+ return 0;
-+ }
-
-- return 0;
-+ case FE_CONFIG_PAD:
-+ case FE_STATS_PAD:
-+ default:
-+ return v4l2_subdev_get_fmt(sd, state, format);
-+ }
- }
-
- static int pisp_fe_link_validate(struct v4l2_subdev *sd,