This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:
Subject: v4l-utils: sync-with-kernel Author: Hans Verkuil <hverkuil-ci...@xs4all.nl> Date: Mon Mar 25 11:16:13 2024 +0100 Update v4l-utils to the latest kernel headers. Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl> contrib/freebsd/include/linux/videodev2.h | 17 +++++++++++++++++ contrib/test/ioctl-test.h | 2 ++ contrib/test/ioctl_32.h | 1 + contrib/test/ioctl_64.h | 1 + include/linux/videodev2.h | 17 +++++++++++++++++ utils/v4l2-tracer/retrace-gen.cpp | 23 +++++++++++++++++++++++ utils/v4l2-tracer/retrace-gen.h | 1 + utils/v4l2-tracer/trace-gen.cpp | 15 +++++++++++++++ utils/v4l2-tracer/trace-gen.h | 1 + utils/v4l2-tracer/v4l2-tracer-info-gen.h | 1 + 10 files changed, 79 insertions(+) --- http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=9ff4a66155ddc75bc93a776057801ee2e912b1ca diff --git a/contrib/freebsd/include/linux/videodev2.h b/contrib/freebsd/include/linux/videodev2.h index e38532ea74ac..4815944b0b8c 100644 --- a/contrib/freebsd/include/linux/videodev2.h +++ b/contrib/freebsd/include/linux/videodev2.h @@ -1026,6 +1026,7 @@ struct v4l2_requestbuffers { #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6) #define V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS (1 << 7) +#define V4L2_BUF_CAP_SUPPORTS_REMOVE_BUFS (1 << 8) /** * struct v4l2_plane - plane info for multi-planar buffers @@ -2598,6 +2599,20 @@ struct v4l2_create_buffers { uint32_t reserved[5]; }; +/** + * struct v4l2_remove_buffers - VIDIOC_REMOVE_BUFS argument + * @index: the first buffer to be removed + * @count: number of buffers to removed + * @type: enum v4l2_buf_type + * @reserved: future extensions + */ +struct v4l2_remove_buffers { + uint32_t index; + uint32_t count; + uint32_t type; + uint32_t reserved[13]; +}; + /* * I O C T L C O D E S F O R V I D E O D E V I C E S * @@ -2697,6 +2712,8 @@ struct v4l2_create_buffers { #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl) +#define VIDIOC_REMOVE_BUFS _IOWR('V', 104, struct v4l2_remove_buffers) + /* Reminder: when adding new ioctls please add support for them to drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */ diff --git a/contrib/test/ioctl-test.h b/contrib/test/ioctl-test.h index c2a54f120d25..691e15de03b1 100644 --- a/contrib/test/ioctl-test.h +++ b/contrib/test/ioctl-test.h @@ -63,6 +63,7 @@ union v4l_parms { struct v4l2_query_ext_ctrl p_v4l2_query_ext_ctrl; struct v4l2_queryctrl p_v4l2_queryctrl; struct v4l2_querymenu p_v4l2_querymenu; + struct v4l2_remove_buffers p_v4l2_remove_buffers; struct v4l2_requestbuffers p_v4l2_requestbuffers; struct v4l2_selection p_v4l2_selection; struct v4l2_sliced_vbi_cap p_v4l2_sliced_vbi_cap; @@ -178,6 +179,7 @@ static const struct { ioc(video, VIDIOC_QUERYSTD), /* v4l2_std_id */ ioc(video, VIDIOC_QUERY_DV_TIMINGS), /* struct v4l2_dv_timings */ ioc(video, VIDIOC_QUERY_EXT_CTRL), /* struct v4l2_query_ext_ctrl */ + ioc(video, VIDIOC_REMOVE_BUFS), /* struct v4l2_remove_buffers */ ioc(video, VIDIOC_REQBUFS), /* struct v4l2_requestbuffers */ ioc(video, VIDIOC_STREAMOFF), /* int */ ioc(video, VIDIOC_STREAMON), /* int */ diff --git a/contrib/test/ioctl_32.h b/contrib/test/ioctl_32.h index 1fab2dc416e5..97f58676fce1 100644 --- a/contrib/test/ioctl_32.h +++ b/contrib/test/ioctl_32.h @@ -87,6 +87,7 @@ #define CMD32_VIDIOC_QUERYSTD 0x8008563f #define CMD32_VIDIOC_QUERY_DV_TIMINGS 0x80845663 #define CMD32_VIDIOC_QUERY_EXT_CTRL 0xc0e85667 +#define CMD32_VIDIOC_REMOVE_BUFS 0xc0405668 #define CMD32_VIDIOC_REQBUFS 0xc0145608 #define CMD32_VIDIOC_STREAMOFF 0x40045613 #define CMD32_VIDIOC_STREAMON 0x40045612 diff --git a/contrib/test/ioctl_64.h b/contrib/test/ioctl_64.h index 9f580cf1cb95..2bad335dab60 100644 --- a/contrib/test/ioctl_64.h +++ b/contrib/test/ioctl_64.h @@ -87,6 +87,7 @@ #define CMD64_VIDIOC_QUERYSTD 0x8008563f #define CMD64_VIDIOC_QUERY_DV_TIMINGS 0x80845663 #define CMD64_VIDIOC_QUERY_EXT_CTRL 0xc0e85667 +#define CMD64_VIDIOC_REMOVE_BUFS 0xc0405668 #define CMD64_VIDIOC_REQBUFS 0xc0145608 #define CMD64_VIDIOC_STREAMOFF 0x40045613 #define CMD64_VIDIOC_STREAMON 0x40045612 diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index d1da8545be6d..b21e7f2c67cd 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -992,6 +992,7 @@ struct v4l2_requestbuffers { #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6) #define V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS (1 << 7) +#define V4L2_BUF_CAP_SUPPORTS_REMOVE_BUFS (1 << 8) /** * struct v4l2_plane - plane info for multi-planar buffers @@ -2564,6 +2565,20 @@ struct v4l2_create_buffers { __u32 reserved[5]; }; +/** + * struct v4l2_remove_buffers - VIDIOC_REMOVE_BUFS argument + * @index: the first buffer to be removed + * @count: number of buffers to removed + * @type: enum v4l2_buf_type + * @reserved: future extensions + */ +struct v4l2_remove_buffers { + __u32 index; + __u32 count; + __u32 type; + __u32 reserved[13]; +}; + /* * I O C T L C O D E S F O R V I D E O D E V I C E S * @@ -2663,6 +2678,8 @@ struct v4l2_create_buffers { #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl) +#define VIDIOC_REMOVE_BUFS _IOWR('V', 104, struct v4l2_remove_buffers) + /* Reminder: when adding new ioctls please add support for them to drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */ diff --git a/utils/v4l2-tracer/retrace-gen.cpp b/utils/v4l2-tracer/retrace-gen.cpp index 593d180add14..08ed96164c28 100644 --- a/utils/v4l2-tracer/retrace-gen.cpp +++ b/utils/v4l2-tracer/retrace-gen.cpp @@ -5278,6 +5278,29 @@ struct v4l2_create_buffers *retrace_v4l2_create_buffers_gen(json_object *parent_ return p; } +struct v4l2_remove_buffers *retrace_v4l2_remove_buffers_gen(json_object *parent_obj, std::string key_name = "") +{ + struct v4l2_remove_buffers *p = (struct v4l2_remove_buffers *) calloc(1, sizeof(v4l2_remove_buffers)); + + json_object *v4l2_remove_buffers_obj; + if (key_name.empty()) + json_object_object_get_ex(parent_obj, "v4l2_remove_buffers", &v4l2_remove_buffers_obj); + else + json_object_object_get_ex(parent_obj, key_name.c_str(), &v4l2_remove_buffers_obj); + + json_object *index_obj; + if (json_object_object_get_ex(v4l2_remove_buffers_obj, "index", &index_obj)) + p->index = (__u32) json_object_get_int64(index_obj); + + json_object *count_obj; + if (json_object_object_get_ex(v4l2_remove_buffers_obj, "count", &count_obj)) + p->count = (__u32) json_object_get_int64(count_obj); + + json_object *type_obj; + if (json_object_object_get_ex(v4l2_remove_buffers_obj, "type", &type_obj)) + p->type = (__u32) s2val(json_object_get_string(type_obj), nullptr); + return p; +} struct media_device_info *retrace_media_device_info_gen(json_object *parent_obj, std::string key_name = "") { struct media_device_info *p = (struct media_device_info *) calloc(1, sizeof(media_device_info)); diff --git a/utils/v4l2-tracer/retrace-gen.h b/utils/v4l2-tracer/retrace-gen.h index e2b2dbfc9860..618651c929c7 100644 --- a/utils/v4l2-tracer/retrace-gen.h +++ b/utils/v4l2-tracer/retrace-gen.h @@ -128,6 +128,7 @@ struct v4l2_dbg_match *retrace_v4l2_dbg_match_gen(json_object *parent_obj, std:: struct v4l2_dbg_register *retrace_v4l2_dbg_register_gen(json_object *parent_obj, std::string key_name = ""); struct v4l2_dbg_chip_info *retrace_v4l2_dbg_chip_info_gen(json_object *parent_obj, std::string key_name = ""); struct v4l2_create_buffers *retrace_v4l2_create_buffers_gen(json_object *parent_obj, std::string key_name = ""); +struct v4l2_remove_buffers *retrace_v4l2_remove_buffers_gen(json_object *parent_obj, std::string key_name = ""); struct media_device_info *retrace_media_device_info_gen(json_object *parent_obj, std::string key_name = ""); struct media_entity_desc *retrace_media_entity_desc_gen(json_object *parent_obj, std::string key_name = ""); struct media_pad_desc *retrace_media_pad_desc_gen(json_object *parent_obj, std::string key_name = ""); diff --git a/utils/v4l2-tracer/trace-gen.cpp b/utils/v4l2-tracer/trace-gen.cpp index 6fc4d4a119fd..fd58d9182905 100644 --- a/utils/v4l2-tracer/trace-gen.cpp +++ b/utils/v4l2-tracer/trace-gen.cpp @@ -3000,6 +3000,21 @@ void trace_v4l2_create_buffers_gen(void *arg, json_object *parent_obj, std::stri json_object_object_add(parent_obj, key_name.c_str(), v4l2_create_buffers_obj); } +void trace_v4l2_remove_buffers_gen(void *arg, json_object *parent_obj, std::string key_name = "") +{ + json_object *v4l2_remove_buffers_obj = json_object_new_object(); + struct v4l2_remove_buffers *p = static_cast<struct v4l2_remove_buffers*>(arg); + + json_object_object_add(v4l2_remove_buffers_obj, "index", json_object_new_int64(p->index)); + json_object_object_add(v4l2_remove_buffers_obj, "count", json_object_new_int64(p->count)); + json_object_object_add(v4l2_remove_buffers_obj, "type", json_object_new_string(val2s(p->type, nullptr).c_str())); + + if (key_name.empty()) + json_object_object_add(parent_obj, "v4l2_remove_buffers", v4l2_remove_buffers_obj); + else + json_object_object_add(parent_obj, key_name.c_str(), v4l2_remove_buffers_obj); +} + void trace_media_device_info_gen(void *arg, json_object *parent_obj, std::string key_name = "") { json_object *media_device_info_obj = json_object_new_object(); diff --git a/utils/v4l2-tracer/trace-gen.h b/utils/v4l2-tracer/trace-gen.h index 1fb23af2993b..c6b3a1859461 100644 --- a/utils/v4l2-tracer/trace-gen.h +++ b/utils/v4l2-tracer/trace-gen.h @@ -128,6 +128,7 @@ void trace_v4l2_dbg_match_gen(void *arg, json_object *parent_obj, std::string ke void trace_v4l2_dbg_register_gen(void *arg, json_object *parent_obj, std::string key_name = ""); void trace_v4l2_dbg_chip_info_gen(void *arg, json_object *parent_obj, std::string key_name = ""); void trace_v4l2_create_buffers_gen(void *arg, json_object *parent_obj, std::string key_name = ""); +void trace_v4l2_remove_buffers_gen(void *arg, json_object *parent_obj, std::string key_name = ""); void trace_media_device_info_gen(void *arg, json_object *parent_obj, std::string key_name = ""); void trace_media_entity_desc_gen(void *arg, json_object *parent_obj, std::string key_name = ""); void trace_media_pad_desc_gen(void *arg, json_object *parent_obj, std::string key_name = ""); diff --git a/utils/v4l2-tracer/v4l2-tracer-info-gen.h b/utils/v4l2-tracer/v4l2-tracer-info-gen.h index b103b9bd4637..022c435c34cf 100644 --- a/utils/v4l2-tracer/v4l2-tracer-info-gen.h +++ b/utils/v4l2-tracer/v4l2-tracer-info-gen.h @@ -2406,6 +2406,7 @@ constexpr val_def ioctl_val_def[] = { { VIDIOC_ENUM_FREQ_BANDS, "VIDIOC_ENUM_FREQ_BANDS" }, { VIDIOC_DBG_G_CHIP_INFO, "VIDIOC_DBG_G_CHIP_INFO" }, { VIDIOC_QUERY_EXT_CTRL, "VIDIOC_QUERY_EXT_CTRL" }, + { VIDIOC_REMOVE_BUFS, "VIDIOC_REMOVE_BUFS" }, { MEDIA_IOC_DEVICE_INFO, "MEDIA_IOC_DEVICE_INFO" }, { MEDIA_IOC_ENUM_ENTITIES, "MEDIA_IOC_ENUM_ENTITIES" }, { MEDIA_IOC_ENUM_LINKS, "MEDIA_IOC_ENUM_LINKS" },