diff options
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.patch | 157 |
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 */ |