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
