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: allow EILSEQ as well as error
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Fri Sep 7 12:02:35 2018 +0200

If the UVC driver couldn't get/set a control it used to return EIO,
but this has changed to EILSEQ with a recent kernel change.

Actually, EIO is now split into multiple errors, but I am getting
EILSEQ where I used to get EIO.

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>

 utils/v4l2-compliance/v4l2-test-controls.cpp | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=1121e071aec3af327aa01cac296e0737614dc48f
diff --git a/utils/v4l2-compliance/v4l2-test-controls.cpp 
b/utils/v4l2-compliance/v4l2-test-controls.cpp
index 508daf05c561..b00aa7d9902f 100644
--- a/utils/v4l2-compliance/v4l2-test-controls.cpp
+++ b/utils/v4l2-compliance/v4l2-test-controls.cpp
@@ -433,6 +433,9 @@ int testSimpleControls(struct node *node)
                } else if (ret == EIO) {
                        warn("s_ctrl returned EIO\n");
                        ret = 0;
+               } else if (ret == EILSEQ) {
+                       warn("s_ctrl returned EILSEQ\n");
+                       ret = 0;
                } else if (ret) {
                        return fail("s_ctrl returned an error (%d)\n", ret);
                }
@@ -446,7 +449,7 @@ int testSimpleControls(struct node *node)
                        ctrl.id = qctrl.id;
                        ctrl.value = qctrl.minimum - 1;
                        ret = doioctl(node, VIDIOC_S_CTRL, &ctrl);
-                       if (ret && ret != EIO && ret != ERANGE)
+                       if (ret && ret != EIO && ret != EILSEQ && ret != ERANGE)
                                return fail("invalid minimum range check\n");
                        if (!ret && checkSimpleCtrl(ctrl, qctrl))
                                return fail("invalid control %08x\n", qctrl.id);
@@ -456,7 +459,7 @@ int testSimpleControls(struct node *node)
                        ctrl.id = qctrl.id;
                        ctrl.value = qctrl.maximum + 1;
                        ret = doioctl(node, VIDIOC_S_CTRL, &ctrl);
-                       if (ret && ret != EIO && ret != ERANGE)
+                       if (ret && ret != EIO && ret != EILSEQ && ret != ERANGE)
                                return fail("invalid maximum range check\n");
                        if (!ret && checkSimpleCtrl(ctrl, qctrl))
                                return fail("invalid control %08x\n", qctrl.id);
@@ -469,7 +472,7 @@ int testSimpleControls(struct node *node)
                        if (ret == ERANGE)
                                warn("%s: returns ERANGE for in-range, but 
non-step-multiple value\n",
                                                qctrl.name);
-                       else if (ret && ret != EIO)
+                       else if (ret && ret != EIO && ret != EILSEQ)
                                return fail("returns error for in-range, but 
non-step-multiple value\n");
                }
 
@@ -499,15 +502,15 @@ int testSimpleControls(struct node *node)
                        ctrl.id = qctrl.id; 
                        ctrl.value = qctrl.minimum;
                        ret = doioctl(node, VIDIOC_S_CTRL, &ctrl);
-                       if (ret && ret != EIO)
+                       if (ret && ret != EIO && ret != EILSEQ)
                                return fail("could not set minimum value\n");
                        ctrl.value = qctrl.maximum;
                        ret = doioctl(node, VIDIOC_S_CTRL, &ctrl);
-                       if (ret && ret != EIO)
+                       if (ret && ret != EIO && ret != EILSEQ)
                                return fail("could not set maximum value\n");
                        ctrl.value = qctrl.default_value;
                        ret = doioctl(node, VIDIOC_S_CTRL, &ctrl);
-                       if (ret && ret != EIO)
+                       if (ret && ret != EIO && ret != EILSEQ)
                                return fail("could not set default value\n");
                }
        }
@@ -641,6 +644,9 @@ int testExtendedControls(struct node *node)
                        if (ret == EIO) {
                                warn("g_ext_ctrls returned EIO\n");
                                ret = 0;
+                       } else if (ret == EILSEQ) {
+                               warn("g_ext_ctrls returned EILSEQ\n");
+                               ret = 0;
                        }
                        if (ret)
                                return fail("g_ext_ctrls returned an error 
(%d)\n", ret);
@@ -670,6 +676,9 @@ int testExtendedControls(struct node *node)
                        if (ret == EIO) {
                                warn("s_ext_ctrls returned EIO\n");
                                ret = 0;
+                       } else if (ret == EILSEQ) {
+                               warn("s_ext_ctrls returned EILSEQ\n");
+                               ret = 0;
                        }
                        if (ret)
                                return fail("s_ext_ctrls returned an error 
(%d)\n", ret);
@@ -739,6 +748,9 @@ int testExtendedControls(struct node *node)
        if (ret == EIO) {
                warn("s_ext_ctrls returned EIO\n");
                ret = 0;
+       } else if (ret == EILSEQ) {
+               warn("s_ext_ctrls returned EILSEQ\n");
+               ret = 0;
        }
        if (ret)
                return fail("could not set all controls\n");
@@ -765,6 +777,9 @@ int testExtendedControls(struct node *node)
        if (ret == EIO) {
                warn("s_ext_ctrls returned EIO\n");
                ret = 0;
+       } else if (ret == EILSEQ) {
+               warn("s_ext_ctrls returned EILSEQ\n");
+               ret = 0;
        }
        if (ret && !multiple_classes)
                return fail("could not set all controls of a specific class\n");

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

Reply via email to