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
