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" },

Reply via email to