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: v4l2-compliance: check for valid media bus_info
Author:  Hans Verkuil <hverkuil-ci...@xs4all.nl>
Date:    Fri Feb 1 11:23:04 2019 +0100

Currently it just warns about missing bus_info strings, but this
will become a fail at some point in the future.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 utils/v4l2-compliance/v4l2-compliance.cpp | 15 ++++++++++-----
 utils/v4l2-compliance/v4l2-compliance.h   |  1 +
 utils/v4l2-compliance/v4l2-test-media.cpp | 16 +++++++++++++++-
 3 files changed, 26 insertions(+), 6 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=2e1badeca2646c88e4e1f1a54e922b53ea62111c
diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp 
b/utils/v4l2-compliance/v4l2-compliance.cpp
index 30fcf6ca9c99..60ee2fe38306 100644
--- a/utils/v4l2-compliance/v4l2-compliance.cpp
+++ b/utils/v4l2-compliance/v4l2-compliance.cpp
@@ -596,6 +596,10 @@ static int testCap(struct node *node)
            memcmp(vcap.bus_info, "platform:", 9) &&
            memcmp(vcap.bus_info, "rmi4:", 5))
                return fail("missing bus_info prefix ('%s')\n", vcap.bus_info);
+       if (!node->media_bus_info.empty() &&
+           node->media_bus_info != std::string((const char *)vcap.bus_info))
+               warn("media bus_info '%s' differs from V4L2 bus_info '%s'\n",
+                    node->media_bus_info.c_str(), vcap.bus_info);
        fail_on_test((vcap.version >> 16) < 3);
        fail_on_test(check_0(vcap.reserved, sizeof(vcap.reserved)));
        caps = vcap.capabilities;
@@ -805,13 +809,14 @@ void testNode(struct node &node, struct node 
&expbuf_node, media_type type,
        if (!node.is_media())
                media_fd = mi_get_media_fd(node.g_fd(), node.bus_info);
 
-       if (!node.is_v4l2()) {
-               int fd = node.is_media() ? node.g_fd() : media_fd;
-               if (fd >= 0) {
-                       struct media_device_info mdinfo;
+       int fd = node.is_media() ? node.g_fd() : media_fd;
+       if (fd >= 0) {
+               struct media_device_info mdinfo;
 
-                       if (!ioctl(fd, MEDIA_IOC_DEVICE_INFO, &mdinfo))
+               if (!ioctl(fd, MEDIA_IOC_DEVICE_INFO, &mdinfo)) {
+                       if (!node.is_v4l2())
                                driver = mdinfo.driver;
+                       node.media_bus_info = mdinfo.bus_info;
                }
        }
 
diff --git a/utils/v4l2-compliance/v4l2-compliance.h 
b/utils/v4l2-compliance/v4l2-compliance.h
index 540078b950c3..f353b6f8d3df 100644
--- a/utils/v4l2-compliance/v4l2-compliance.h
+++ b/utils/v4l2-compliance/v4l2-compliance.h
@@ -113,6 +113,7 @@ struct base_node {
        unsigned priv_compound_controls;
        unsigned codec_mask;
        __u32 media_version;
+       std::string media_bus_info;
        media_entity_desc entity;
        media_pad_desc *pads;
        media_link_desc *links;
diff --git a/utils/v4l2-compliance/v4l2-test-media.cpp 
b/utils/v4l2-compliance/v4l2-test-media.cpp
index ae5f0c8b8572..b2322e5f2b18 100644
--- a/utils/v4l2-compliance/v4l2-test-media.cpp
+++ b/utils/v4l2-compliance/v4l2-test-media.cpp
@@ -47,7 +47,21 @@ int testMediaDeviceInfo(struct node *node)
        fail_on_test(check_string(mdinfo.driver, sizeof(mdinfo.driver)));
        fail_on_test(mdinfo.model[0] && check_string(mdinfo.model, 
sizeof(mdinfo.model)));
        fail_on_test(mdinfo.serial[0] && check_string(mdinfo.serial, 
sizeof(mdinfo.serial)));
-       fail_on_test(mdinfo.bus_info[0] && check_string(mdinfo.bus_info, 
sizeof(mdinfo.bus_info)));
+       if (!mdinfo.bus_info[0]) {
+               warn("empty bus_info\n");
+       } else {
+               fail_on_test(check_string(mdinfo.bus_info, 
sizeof(mdinfo.bus_info)));
+               // Check for valid prefixes
+               if (memcmp(mdinfo.bus_info, "usb-", 4) &&
+                   memcmp(mdinfo.bus_info, "PCI:", 4) &&
+                   memcmp(mdinfo.bus_info, "PCIe:", 5) &&
+                   memcmp(mdinfo.bus_info, "ISA:", 4) &&
+                   memcmp(mdinfo.bus_info, "I2C:", 4) &&
+                   memcmp(mdinfo.bus_info, "parport", 7) &&
+                   memcmp(mdinfo.bus_info, "platform:", 9) &&
+                   memcmp(mdinfo.bus_info, "rmi4:", 5))
+                       return fail("missing bus_info prefix ('%s')\n", 
mdinfo.bus_info);
+       }
        fail_on_test(mdinfo.media_version == 0);
        if (mdinfo.media_version != MEDIA_API_VERSION)
                fail_on_test(mdinfo.driver_version != mdinfo.media_version);

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to