This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-utils.git tree:

Subject: v4l2-compliance: add tests for VIDIOC_S_HW_FREQ_SEEK.
Author:  Hans Verkuil <[email protected]>
Date:    Fri Apr 27 23:38:23 2012 +0200

Signed-off-by: Hans Verkuil <[email protected]>
(cherry picked from commit 2da29312426eb515a477a69e4b37a1a82a8c9614)

Signed-off-by: Gregor Jasny <[email protected]>

 utils/v4l2-compliance/v4l2-compliance.cpp        |    2 +-
 utils/v4l2-compliance/v4l2-compliance.h          |    1 +
 utils/v4l2-compliance/v4l2-test-input-output.cpp |   34 ++++++++++++++++++++++
 3 files changed, 36 insertions(+), 1 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=6d53e2007ed8427e3027405df1e8b0a273248cff

diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp 
b/utils/v4l2-compliance/v4l2-compliance.cpp
index 9de3df4..1b4a816 100644
--- a/utils/v4l2-compliance/v4l2-compliance.cpp
+++ b/utils/v4l2-compliance/v4l2-compliance.cpp
@@ -565,6 +565,7 @@ int main(int argc, char **argv)
        printf("Input ioctls:\n");
        printf("\ttest VIDIOC_G/S_TUNER: %s\n", ok(testTuner(&node)));
        printf("\ttest VIDIOC_G/S_FREQUENCY: %s\n", ok(testTunerFreq(&node)));
+       printf("\ttest VIDIOC_S_HW_FREQ_SEEK: %s\n", 
ok(testTunerHwSeek(&node)));
        printf("\ttest VIDIOC_ENUMAUDIO: %s\n", ok(testEnumInputAudio(&node)));
        printf("\ttest VIDIOC_G/S/ENUMINPUT: %s\n", ok(testInput(&node)));
        printf("\ttest VIDIOC_G/S_AUDIO: %s\n", ok(testInputAudio(&node)));
@@ -618,7 +619,6 @@ int main(int argc, char **argv)
           VIDIOC_S/TRY_FMT
           VIDIOC_G/S_PARM
           VIDIOC_G/S_JPEGCOMP
-          VIDIOC_S_HW_FREQ_SEEK
           VIDIOC_(TRY_)ENCODER_CMD
           VIDIOC_G_ENC_INDEX
           VIDIOC_REQBUFS/QBUF/DQBUF/QUERYBUF
diff --git a/utils/v4l2-compliance/v4l2-compliance.h 
b/utils/v4l2-compliance/v4l2-compliance.h
index b22011c..46cabb6 100644
--- a/utils/v4l2-compliance/v4l2-compliance.h
+++ b/utils/v4l2-compliance/v4l2-compliance.h
@@ -136,6 +136,7 @@ int testLogStatus(struct node *node);
 // Input ioctl tests
 int testTuner(struct node *node);
 int testTunerFreq(struct node *node);
+int testTunerHwSeek(struct node *node);
 int testEnumInputAudio(struct node *node);
 int testInput(struct node *node);
 int testInputAudio(struct node *node);
diff --git a/utils/v4l2-compliance/v4l2-test-input-output.cpp 
b/utils/v4l2-compliance/v4l2-test-input-output.cpp
index e2cffc4..a719022 100644
--- a/utils/v4l2-compliance/v4l2-test-input-output.cpp
+++ b/utils/v4l2-compliance/v4l2-test-input-output.cpp
@@ -239,6 +239,40 @@ int testTunerFreq(struct node *node)
        return node->tuners ? 0 : ENOTTY;
 }
 
+int testTunerHwSeek(struct node *node)
+{
+       struct v4l2_hw_freq_seek seek;
+       int ret;
+
+       memset(&seek, 0, sizeof(seek));
+       seek.type = V4L2_TUNER_RADIO;
+       ret = doioctl(node, VIDIOC_S_HW_FREQ_SEEK, &seek);
+       if (!(node->caps & V4L2_CAP_HW_FREQ_SEEK) && ret != ENOTTY)
+               return fail("hw seek supported but capability not set\n");
+       if (!node->is_radio && ret != ENOTTY)
+               return fail("hw seek supported on a non-radio node?!\n");
+       if (!node->is_radio || !(node->caps & V4L2_CAP_HW_FREQ_SEEK))
+               return ENOTTY;
+       seek.type = V4L2_TUNER_ANALOG_TV;
+       ret = doioctl(node, VIDIOC_S_HW_FREQ_SEEK, &seek);
+       if (ret != EINVAL)
+               return fail("hw seek accepted TV tuner\n");
+       seek.type = V4L2_TUNER_RADIO;
+       seek.seek_upward = 1;
+       ret = doioctl(node, VIDIOC_S_HW_FREQ_SEEK, &seek);
+       if (ret == EINVAL) {
+               seek.wrap_around = 1;
+               ret = doioctl(node, VIDIOC_S_HW_FREQ_SEEK, &seek);
+       }
+       if (ret == EINVAL)
+               return fail("neither wrap_around value was accepted\n");
+       if (ret)
+               return fail("hw seek failed with error %d\n", ret);
+       if (check_0(seek.reserved, sizeof(seek.reserved)))
+               return fail("non-zero reserved fields\n");
+       return 0;
+}
+
 static int checkInput(struct node *node, const struct v4l2_input &descr, 
unsigned i)
 {
        __u32 mask = (1 << node->audio_inputs) - 1;

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

Reply via email to