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: add new checks for DV_TIMINGS controls & events
Author:  Hans Verkuil <[email protected]>
Date:    Wed Mar 23 08:55:49 2016 +0100

Inputs and outputs with CAP_DV_TIMINGS should implement certain events
and controls. Add checks for that.

Signed-off-by: Hans Verkuil <[email protected]>

 utils/v4l2-compliance/v4l2-compliance.cpp    |  2 +-
 utils/v4l2-compliance/v4l2-compliance.h      |  2 +-
 utils/v4l2-compliance/v4l2-test-controls.cpp | 23 ++++++++++++++++++++++-
 3 files changed, 24 insertions(+), 3 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=fb0e458dfed3c2896c5c85007e5aa81ff01bda27
diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp 
b/utils/v4l2-compliance/v4l2-compliance.cpp
index 54d4ab6cc618..48dc8b439d43 100644
--- a/utils/v4l2-compliance/v4l2-compliance.cpp
+++ b/utils/v4l2-compliance/v4l2-compliance.cpp
@@ -1098,7 +1098,7 @@ int main(int argc, char **argv)
                printf("\t\ttest VIDIOC_QUERYCTRL: %s\n", 
ok(testQueryControls(&node)));
                printf("\t\ttest VIDIOC_G/S_CTRL: %s\n", 
ok(testSimpleControls(&node)));
                printf("\t\ttest VIDIOC_G/S/TRY_EXT_CTRLS: %s\n", 
ok(testExtendedControls(&node)));
-               printf("\t\ttest VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: %s\n", 
ok(testControlEvents(&node)));
+               printf("\t\ttest VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: %s\n", 
ok(testEvents(&node)));
                printf("\t\ttest VIDIOC_G/S_JPEGCOMP: %s\n", 
ok(testJpegComp(&node)));
                printf("\t\tStandard Controls: %d Private Controls: %d\n",
                                node.std_controls, node.priv_controls);
diff --git a/utils/v4l2-compliance/v4l2-compliance.h 
b/utils/v4l2-compliance/v4l2-compliance.h
index 59f432d1d19d..67ecbf58b8af 100644
--- a/utils/v4l2-compliance/v4l2-compliance.h
+++ b/utils/v4l2-compliance/v4l2-compliance.h
@@ -194,7 +194,7 @@ int testQueryExtControls(struct node *node);
 int testQueryControls(struct node *node);
 int testSimpleControls(struct node *node);
 int testExtendedControls(struct node *node);
-int testControlEvents(struct node *node);
+int testEvents(struct node *node);
 int testJpegComp(struct node *node);
 
 // I/O configuration ioctl tests
diff --git a/utils/v4l2-compliance/v4l2-test-controls.cpp 
b/utils/v4l2-compliance/v4l2-test-controls.cpp
index 18dd1b23395c..cb7e15a4f78f 100644
--- a/utils/v4l2-compliance/v4l2-test-controls.cpp
+++ b/utils/v4l2-compliance/v4l2-test-controls.cpp
@@ -761,7 +761,7 @@ int testExtendedControls(struct node *node)
        return 0;
 }
 
-int testControlEvents(struct node *node)
+int testEvents(struct node *node)
 {
        qctrl_map::iterator iter;
 
@@ -801,6 +801,27 @@ int testControlEvents(struct node *node)
                if (ret)
                        return fail("unsubscribe event for control '%s' 
failed\n", qctrl.name);
        }
+       if (node->cur_io_caps & V4L2_IN_CAP_DV_TIMINGS) {
+               struct v4l2_event_subscription sub = { };
+               int id;
+
+               if (node->can_capture) {
+                       fail_on_test(doioctl(node, VIDIOC_G_INPUT, &id));
+                       if (node->controls.find(V4L2_CID_DV_RX_POWER_PRESENT) 
== node->controls.end())
+                               warn("V4L2_CID_DV_RX_POWER_PRESENT not found 
for input %d\n", id);
+               } else {
+                       fail_on_test(doioctl(node, VIDIOC_G_OUTPUT, &id));
+                       if (node->controls.find(V4L2_CID_DV_TX_HOTPLUG) == 
node->controls.end())
+                               warn("V4L2_CID_DV_TX_HOTPLUG not found for 
output %d\n", id);
+                       if (node->controls.find(V4L2_CID_DV_TX_EDID_PRESENT) == 
node->controls.end())
+                               warn("V4L2_CID_DV_TX_EDID_PRESENT not found for 
output %d\n", id);
+               }
+               sub.type = V4L2_EVENT_SOURCE_CHANGE;
+               sub.id = id;
+               fail_on_test(doioctl(node, VIDIOC_SUBSCRIBE_EVENT, &sub));
+               fail_on_test(doioctl(node, VIDIOC_UNSUBSCRIBE_EVENT, &sub));
+       }
+
        if (node->controls.empty())
                return ENOTTY;
        return 0;

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to