* [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
* 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
* [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
* 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 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
* [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
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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.