* [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config
@ 2019-11-01 11:23 Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr Ricardo Ribalda Delgado
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-01 11:23 UTC (permalink / raw)
To: Hans Verkuil, linux-media, linux-kernel; +Cc: Ricardo Ribalda Delgado
This allows setting the default value on compound controls created via
v4l2_ctrl_new_custom.
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
---
drivers/media/v4l2-core/v4l2-ctrls.c | 2 +-
include/media/v4l2-ctrls.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index b4caf2d4d076..73d99c3561ce 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -2690,7 +2690,7 @@ struct v4l2_ctrl *v4l2_ctrl_new_custom(struct v4l2_ctrl_handler *hdl,
type, min, max,
is_menu ? cfg->menu_skip_mask : step, def,
cfg->dims, cfg->elem_size,
- flags, qmenu, qmenu_int, ptr_null, priv);
+ flags, qmenu, qmenu_int, cfg->p_def, priv);
if (ctrl)
ctrl->is_private = cfg->is_private;
return ctrl;
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index e719d56fc024..78a97b10c89e 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -382,6 +382,7 @@ struct v4l2_ctrl_handler {
* @max: The control's maximum value.
* @step: The control's step value for non-menu controls.
* @def: The control's default value.
+ * @p_def: The control's default value for compound controls.
* @dims: The size of each dimension.
* @elem_size: The size in bytes of the control.
* @flags: The control's flags.
@@ -410,6 +411,7 @@ struct v4l2_ctrl_config {
s64 max;
u64 step;
s64 def;
+ union v4l2_ctrl_ptr p_def;
u32 dims[V4L2_CTRL_MAX_DIMS];
u32 elem_size;
u32 flags;
--
2.24.0.rc1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr
2019-11-01 11:23 [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config Ricardo Ribalda Delgado
@ 2019-11-01 11:23 ` Ricardo Ribalda Delgado
2019-11-04 9:48 ` Hans Verkuil
2019-11-01 11:23 ` [PATCH v3 3/5] media: vivid: Add an area control Ricardo Ribalda Delgado
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-01 11:23 UTC (permalink / raw)
To: Hans Verkuil, linux-media, linux-kernel; +Cc: Ricardo Ribalda Delgado
This pointer is used to point to data that is constant. Thanks to this
we can avoid a lot of casting and we make more clear when the data is
constant or variable.
Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
---
include/media/v4l2-ctrls.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index 78a97b10c89e..7db9e719a583 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -56,6 +56,7 @@ struct poll_table_struct;
* @p_hevc_slice_params: Pointer to an HEVC slice parameters structure.
* @p_area: Pointer to an area.
* @p: Pointer to a compound value.
+ * @p_const: Pointer to a constant compound value.
*/
union v4l2_ctrl_ptr {
s32 *p_s32;
@@ -78,6 +79,7 @@ union v4l2_ctrl_ptr {
struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
struct v4l2_area *p_area;
void *p;
+ const void *p_const;
};
/**
--
2.24.0.rc1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/5] media: vivid: Add an area control
2019-11-01 11:23 [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr Ricardo Ribalda Delgado
@ 2019-11-01 11:23 ` Ricardo Ribalda Delgado
2019-11-04 9:43 ` Hans Verkuil
2019-11-01 11:23 ` [PATCH v3 4/5] media: v4l2_core: Add p_area to struct v4l2_ext_control Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 5/5] Documentation: v42l_core: v4l2_ext_control Ricardo Ribalda Delgado
3 siblings, 1 reply; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-01 11:23 UTC (permalink / raw)
To: Hans Verkuil, linux-media, linux-kernel; +Cc: Ricardo Ribalda Delgado
This control represents a generic read/write area.
Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
---
drivers/media/platform/vivid/vivid-ctrls.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/media/platform/vivid/vivid-ctrls.c b/drivers/media/platform/vivid/vivid-ctrls.c
index b250fc3764e2..fd35863798a7 100644
--- a/drivers/media/platform/vivid/vivid-ctrls.c
+++ b/drivers/media/platform/vivid/vivid-ctrls.c
@@ -32,6 +32,7 @@
#define VIVID_CID_U32_ARRAY (VIVID_CID_CUSTOM_BASE + 8)
#define VIVID_CID_U16_MATRIX (VIVID_CID_CUSTOM_BASE + 9)
#define VIVID_CID_U8_4D_ARRAY (VIVID_CID_CUSTOM_BASE + 10)
+#define VIVID_CID_AREA (VIVID_CID_CUSTOM_BASE + 11)
#define VIVID_CID_VIVID_BASE (0x00f00000 | 0xf000)
#define VIVID_CID_VIVID_CLASS (0x00f00000 | 1)
@@ -266,6 +267,18 @@ static const struct v4l2_ctrl_config vivid_ctrl_disconnect = {
.type = V4L2_CTRL_TYPE_BUTTON,
};
+static const struct v4l2_area area = {
+ .width = 0xcafe,
+ .height = 0xb1b1d,
+};
+
+static const struct v4l2_ctrl_config vivid_ctrl_area = {
+ .ops = &vivid_user_gen_ctrl_ops,
+ .id = VIVID_CID_AREA,
+ .name = "Area",
+ .type = V4L2_CTRL_TYPE_AREA,
+ .p_def.p_const = &area,
+};
/* Framebuffer Controls */
@@ -1574,6 +1587,7 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
+ v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
--
2.24.0.rc1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 4/5] media: v4l2_core: Add p_area to struct v4l2_ext_control
2019-11-01 11:23 [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 3/5] media: vivid: Add an area control Ricardo Ribalda Delgado
@ 2019-11-01 11:23 ` Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 5/5] Documentation: v42l_core: v4l2_ext_control Ricardo Ribalda Delgado
3 siblings, 0 replies; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-01 11:23 UTC (permalink / raw)
To: Hans Verkuil, linux-media, linux-kernel; +Cc: Ricardo Ribalda Delgado
Allow accessing V4L2_CTRL_TYPE_AREA controls without any casting.
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
---
include/uapi/linux/videodev2.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index f98bbcced8ff..04481c717fee 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -1684,6 +1684,7 @@ struct v4l2_ext_control {
__u8 __user *p_u8;
__u16 __user *p_u16;
__u32 __user *p_u32;
+ struct v4l2_area __user *p_area;
void __user *ptr;
};
} __attribute__ ((packed));
--
2.24.0.rc1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] Documentation: v42l_core: v4l2_ext_control
2019-11-01 11:23 [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config Ricardo Ribalda Delgado
` (2 preceding siblings ...)
2019-11-01 11:23 ` [PATCH v3 4/5] media: v4l2_core: Add p_area to struct v4l2_ext_control Ricardo Ribalda Delgado
@ 2019-11-01 11:23 ` Ricardo Ribalda Delgado
3 siblings, 0 replies; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-01 11:23 UTC (permalink / raw)
To: Hans Verkuil, linux-media, linux-kernel; +Cc: Ricardo Ribalda Delgado
Describe p_area field from v4l2_ext_ctrl
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
---
Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst b/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
index 13dc1a986249..271cac18afbb 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
@@ -198,6 +198,11 @@ still cause this situation.
- ``p_u32``
- A pointer to a matrix control of unsigned 32-bit values. Valid if
this control is of type ``V4L2_CTRL_TYPE_U32``.
+ * -
+ - :c:type:`v4l2_area` *
+ - ``p_area``
+ - A pointer to a struct :c:type:`v4l2_area`. Valid if this control is
+ of type ``V4L2_CTRL_TYPE_AREA``.
* -
- void *
- ``ptr``
--
2.24.0.rc1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/5] media: vivid: Add an area control
2019-11-01 11:23 ` [PATCH v3 3/5] media: vivid: Add an area control Ricardo Ribalda Delgado
@ 2019-11-04 9:43 ` Hans Verkuil
2019-11-04 10:11 ` Ricardo Ribalda Delgado
0 siblings, 1 reply; 8+ messages in thread
From: Hans Verkuil @ 2019-11-04 9:43 UTC (permalink / raw)
To: Ricardo Ribalda Delgado, linux-media, linux-kernel
On 11/1/19 12:23 PM, Ricardo Ribalda Delgado wrote:
> This control represents a generic read/write area.
>
> Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
> ---
> drivers/media/platform/vivid/vivid-ctrls.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/drivers/media/platform/vivid/vivid-ctrls.c b/drivers/media/platform/vivid/vivid-ctrls.c
> index b250fc3764e2..fd35863798a7 100644
> --- a/drivers/media/platform/vivid/vivid-ctrls.c
> +++ b/drivers/media/platform/vivid/vivid-ctrls.c
> @@ -32,6 +32,7 @@
> #define VIVID_CID_U32_ARRAY (VIVID_CID_CUSTOM_BASE + 8)
> #define VIVID_CID_U16_MATRIX (VIVID_CID_CUSTOM_BASE + 9)
> #define VIVID_CID_U8_4D_ARRAY (VIVID_CID_CUSTOM_BASE + 10)
> +#define VIVID_CID_AREA (VIVID_CID_CUSTOM_BASE + 11)
>
> #define VIVID_CID_VIVID_BASE (0x00f00000 | 0xf000)
> #define VIVID_CID_VIVID_CLASS (0x00f00000 | 1)
> @@ -266,6 +267,18 @@ static const struct v4l2_ctrl_config vivid_ctrl_disconnect = {
> .type = V4L2_CTRL_TYPE_BUTTON,
> };
>
> +static const struct v4l2_area area = {
> + .width = 0xcafe,
> + .height = 0xb1b1d,
I don't think there is any need for these weird values. Just set this to
e.g. 1000x2000. Just as long as width and height are different.
Regards,
Hans
> +};
> +
> +static const struct v4l2_ctrl_config vivid_ctrl_area = {
> + .ops = &vivid_user_gen_ctrl_ops,
> + .id = VIVID_CID_AREA,
> + .name = "Area",
> + .type = V4L2_CTRL_TYPE_AREA,
> + .p_def.p_const = &area,
> +};
>
> /* Framebuffer Controls */
>
> @@ -1574,6 +1587,7 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
> dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
> dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
> dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
> + v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
> v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
> v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
> v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr
2019-11-01 11:23 ` [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr Ricardo Ribalda Delgado
@ 2019-11-04 9:48 ` Hans Verkuil
0 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2019-11-04 9:48 UTC (permalink / raw)
To: Ricardo Ribalda Delgado, linux-media, linux-kernel
Hi Ricardo,
On 11/1/19 12:23 PM, Ricardo Ribalda Delgado wrote:
> This pointer is used to point to data that is constant. Thanks to this
> we can avoid a lot of casting and we make more clear when the data is
> constant or variable.
>
> Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
> ---
> include/media/v4l2-ctrls.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
> index 78a97b10c89e..7db9e719a583 100644
> --- a/include/media/v4l2-ctrls.h
> +++ b/include/media/v4l2-ctrls.h
> @@ -56,6 +56,7 @@ struct poll_table_struct;
> * @p_hevc_slice_params: Pointer to an HEVC slice parameters structure.
> * @p_area: Pointer to an area.
> * @p: Pointer to a compound value.
> + * @p_const: Pointer to a constant compound value.
> */
> union v4l2_ctrl_ptr {
> s32 *p_s32;
> @@ -78,6 +79,7 @@ union v4l2_ctrl_ptr {
> struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
> struct v4l2_area *p_area;
> void *p;
> + const void *p_const;
> };
>
> /**
>
This addition makes it possible to use const void pointers elsewhere in
the control framework.
E.g. in std_equal you can use p_const in the memcmp at the end.
Can you go through the v4l2-ctrls.c source and replace .p by .p_const
where it makes sense?
Obviously this would be a separate patch.
Regards,
Hans
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/5] media: vivid: Add an area control
2019-11-04 9:43 ` Hans Verkuil
@ 2019-11-04 10:11 ` Ricardo Ribalda Delgado
0 siblings, 0 replies; 8+ messages in thread
From: Ricardo Ribalda Delgado @ 2019-11-04 10:11 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, LKML
Hi hans
On Mon, Nov 4, 2019 at 10:44 AM Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote:
>
> On 11/1/19 12:23 PM, Ricardo Ribalda Delgado wrote:
> > This control represents a generic read/write area.
> >
> > Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> > Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
> > ---
> > drivers/media/platform/vivid/vivid-ctrls.c | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/drivers/media/platform/vivid/vivid-ctrls.c b/drivers/media/platform/vivid/vivid-ctrls.c
> > index b250fc3764e2..fd35863798a7 100644
> > --- a/drivers/media/platform/vivid/vivid-ctrls.c
> > +++ b/drivers/media/platform/vivid/vivid-ctrls.c
> > @@ -32,6 +32,7 @@
> > #define VIVID_CID_U32_ARRAY (VIVID_CID_CUSTOM_BASE + 8)
> > #define VIVID_CID_U16_MATRIX (VIVID_CID_CUSTOM_BASE + 9)
> > #define VIVID_CID_U8_4D_ARRAY (VIVID_CID_CUSTOM_BASE + 10)
> > +#define VIVID_CID_AREA (VIVID_CID_CUSTOM_BASE + 11)
> >
> > #define VIVID_CID_VIVID_BASE (0x00f00000 | 0xf000)
> > #define VIVID_CID_VIVID_CLASS (0x00f00000 | 1)
> > @@ -266,6 +267,18 @@ static const struct v4l2_ctrl_config vivid_ctrl_disconnect = {
> > .type = V4L2_CTRL_TYPE_BUTTON,
> > };
> >
> > +static const struct v4l2_area area = {
> > + .width = 0xcafe,
> > + .height = 0xb1b1d,
>
> I don't think there is any need for these weird values. Just set this to
> e.g. 1000x2000. Just as long as width and height are different.
>
> Regards,
Sure. I will change that.
I though anyone liked vivid cafe ;P
>
> Hans
>
> > +};
> > +
> > +static const struct v4l2_ctrl_config vivid_ctrl_area = {
> > + .ops = &vivid_user_gen_ctrl_ops,
> > + .id = VIVID_CID_AREA,
> > + .name = "Area",
> > + .type = V4L2_CTRL_TYPE_AREA,
> > + .p_def.p_const = &area,
> > +};
> >
> > /* Framebuffer Controls */
> >
> > @@ -1574,6 +1587,7 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
> > dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
> > dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
> > dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
> > + v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
> > v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
> > v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
> > v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
> >
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-11-04 10:12 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-01 11:23 [PATCH v3 1/5] media: v4l2_ctrl: Add p_def to v4l2_ctrl_config Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 2/5] media: v4l2_ctrl: Add const pointer to ctrl_ptr Ricardo Ribalda Delgado
2019-11-04 9:48 ` Hans Verkuil
2019-11-01 11:23 ` [PATCH v3 3/5] media: vivid: Add an area control Ricardo Ribalda Delgado
2019-11-04 9:43 ` Hans Verkuil
2019-11-04 10:11 ` Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 4/5] media: v4l2_core: Add p_area to struct v4l2_ext_control Ricardo Ribalda Delgado
2019-11-01 11:23 ` [PATCH v3 5/5] Documentation: v42l_core: v4l2_ext_control Ricardo Ribalda Delgado
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).