@@ -34,6 +34,7 @@
#define VIVID_CID_U8_4D_ARRAY (VIVID_CID_CUSTOM_BASE + 10)
#define VIVID_CID_AREA (VIVID_CID_CUSTOM_BASE + 11)
#define VIVID_CID_RO_INTEGER (VIVID_CID_CUSTOM_BASE + 12)
+#define VIVID_CID_RECT (VIVID_CID_CUSTOM_BASE + 13)
#define VIVID_CID_VIVID_BASE (0x00f00000 | 0xf000)
#define VIVID_CID_VIVID_CLASS (0x00f00000 | 1)
@@ -292,6 +293,38 @@ static const struct v4l2_ctrl_config vivid_ctrl_area = {
.p_def.p_const = &area,
};
+static const struct v4l2_rect def_rect = {
+ .left = 0,
+ .top = 0,
+ .width = 1000,
+ .height = 2000,
+};
+
+static const struct v4l2_rect min_rect = {
+ .left = 0,
+ .top = 0,
+ .width = 1,
+ .height = 2,
+};
+
+static const struct v4l2_rect max_rect = {
+ .left = 0,
+ .top = 0,
+ .width = 2000,
+ .height = 4000,
+};
+
+static const struct v4l2_ctrl_config vivid_ctrl_rect = {
+ .ops = &vivid_user_gen_ctrl_ops,
+ .id = VIVID_CID_RECT,
+ .name = "Region of Interest Rectangle",
+ .type = V4L2_CTRL_TYPE_RECT,
+ .p_def.p_const = &def_rect,
+ .p_min.p_const = &min_rect,
+ .p_max.p_const = &max_rect,
+};
+
+
static const struct v4l2_ctrl_config vivid_ctrl_ro_int32 = {
.ops = &vivid_user_gen_ctrl_ops,
.id = VIVID_CID_RO_INTEGER,
@@ -1611,6 +1644,7 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
dev->ro_int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_ro_int32, NULL);
v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
+ v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_rect, 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);
The control supports current, default, minimum and maximum. Tested by calling ioctls from the user space. Signed-off-by: Yunke Cao <yunkec@google.com> --- .../media/test-drivers/vivid/vivid-ctrls.c | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+)