aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch157
1 files changed, 0 insertions, 157 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch b/target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch
deleted file mode 100644
index 2accf3d3b7..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0482-media-add-V4L2_CTRL_TYPE_AREA-control-type.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-From 4af6218f1d01e5ae54dc43e4bd2421617c777570 Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ribalda@kernel.org>
-Date: Mon, 7 Oct 2019 12:06:31 -0300
-Subject: [PATCH] media: add V4L2_CTRL_TYPE_AREA control type
-
-Commit d1dc49370f8371b00e682ac409aa1987ce641e93 upstream.
-
-This type contains the width and the height of a rectangular area.
-
-Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
-Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
----
- drivers/media/v4l2-core/v4l2-ctrls.c | 21 ++++++++++++++
- include/media/v4l2-ctrls.h | 42 ++++++++++++++++++++++++++++
- include/uapi/linux/videodev2.h | 6 ++++
- 3 files changed, 69 insertions(+)
-
---- a/drivers/media/v4l2-core/v4l2-ctrls.c
-+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
-@@ -1673,6 +1673,7 @@ static int std_validate_compound(const s
- {
- struct v4l2_ctrl_mpeg2_slice_params *p_mpeg2_slice_params;
- struct v4l2_ctrl_vp8_frame_header *p_vp8_frame_header;
-+ struct v4l2_area *area;
- void *p = ptr.p + idx * ctrl->elem_size;
-
- switch ((u32)ctrl->type) {
-@@ -1749,6 +1750,11 @@ static int std_validate_compound(const s
- zero_padding(p_vp8_frame_header->entropy_header);
- zero_padding(p_vp8_frame_header->coder_state);
- break;
-+ case V4L2_CTRL_TYPE_AREA:
-+ area = p;
-+ if (!area->width || !area->height)
-+ return -EINVAL;
-+ break;
- default:
- return -EINVAL;
- }
-@@ -2431,6 +2437,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
- case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
- elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
- break;
-+ case V4L2_CTRL_TYPE_AREA:
-+ elem_size = sizeof(struct v4l2_area);
-+ break;
- default:
- if (type < V4L2_CTRL_COMPOUND_TYPES)
- elem_size = sizeof(s32);
-@@ -4098,6 +4107,18 @@ int __v4l2_ctrl_s_ctrl_string(struct v4l
- }
- EXPORT_SYMBOL(__v4l2_ctrl_s_ctrl_string);
-
-+int __v4l2_ctrl_s_ctrl_area(struct v4l2_ctrl *ctrl,
-+ const struct v4l2_area *area)
-+{
-+ lockdep_assert_held(ctrl->handler->lock);
-+
-+ /* It's a driver bug if this happens. */
-+ WARN_ON(ctrl->type != V4L2_CTRL_TYPE_AREA);
-+ *ctrl->p_new.p_area = *area;
-+ return set_ctrl(NULL, ctrl, 0);
-+}
-+EXPORT_SYMBOL(__v4l2_ctrl_s_ctrl_area);
-+
- void v4l2_ctrl_request_complete(struct media_request *req,
- struct v4l2_ctrl_handler *main_hdl)
- {
---- a/include/media/v4l2-ctrls.h
-+++ b/include/media/v4l2-ctrls.h
-@@ -50,6 +50,7 @@ struct poll_table_struct;
- * @p_h264_slice_params: Pointer to a struct v4l2_ctrl_h264_slice_params.
- * @p_h264_decode_params: Pointer to a struct v4l2_ctrl_h264_decode_params.
- * @p_vp8_frame_header: Pointer to a VP8 frame header structure.
-+ * @p_area: Pointer to an area.
- * @p: Pointer to a compound value.
- */
- union v4l2_ctrl_ptr {
-@@ -68,6 +69,7 @@ union v4l2_ctrl_ptr {
- struct v4l2_ctrl_h264_slice_params *p_h264_slice_params;
- struct v4l2_ctrl_h264_decode_params *p_h264_decode_params;
- struct v4l2_ctrl_vp8_frame_header *p_vp8_frame_header;
-+ struct v4l2_area *p_area;
- void *p;
- };
-
-@@ -1063,6 +1065,46 @@ static inline int v4l2_ctrl_s_ctrl_strin
- v4l2_ctrl_unlock(ctrl);
-
- return rval;
-+}
-+
-+/**
-+ * __v4l2_ctrl_s_ctrl_area() - Unlocked variant of v4l2_ctrl_s_ctrl_area().
-+ *
-+ * @ctrl: The control.
-+ * @area: The new area.
-+ *
-+ * This sets the control's new area safely by going through the control
-+ * framework. This function assumes the control's handler is already locked,
-+ * allowing it to be used from within the &v4l2_ctrl_ops functions.
-+ *
-+ * This function is for area type controls only.
-+ */
-+int __v4l2_ctrl_s_ctrl_area(struct v4l2_ctrl *ctrl,
-+ const struct v4l2_area *area);
-+
-+/**
-+ * v4l2_ctrl_s_ctrl_area() - Helper function to set a control's area value
-+ * from within a driver.
-+ *
-+ * @ctrl: The control.
-+ * @area: The new area.
-+ *
-+ * This sets the control's new area safely by going through the control
-+ * framework. This function will lock the control's handler, so it cannot be
-+ * used from within the &v4l2_ctrl_ops functions.
-+ *
-+ * This function is for area type controls only.
-+ */
-+static inline int v4l2_ctrl_s_ctrl_area(struct v4l2_ctrl *ctrl,
-+ const struct v4l2_area *area)
-+{
-+ int rval;
-+
-+ v4l2_ctrl_lock(ctrl);
-+ rval = __v4l2_ctrl_s_ctrl_area(ctrl, area);
-+ v4l2_ctrl_unlock(ctrl);
-+
-+ return rval;
- }
-
- /* Internal helper functions that deal with control events. */
---- a/include/uapi/linux/videodev2.h
-+++ b/include/uapi/linux/videodev2.h
-@@ -426,6 +426,11 @@ struct v4l2_fract {
- __u32 denominator;
- };
-
-+struct v4l2_area {
-+ __u32 width;
-+ __u32 height;
-+};
-+
- /**
- * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
- *
-@@ -1724,6 +1729,7 @@ enum v4l2_ctrl_type {
- V4L2_CTRL_TYPE_U8 = 0x0100,
- V4L2_CTRL_TYPE_U16 = 0x0101,
- V4L2_CTRL_TYPE_U32 = 0x0102,
-+ V4L2_CTRL_TYPE_AREA = 0x0106,
- };
-
- /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */