On Tuesday, March 29, 2011 21:25:55 Ondrej Zary wrote:
On Saturday 26 March 2011 11:19:31 Hans Verkuil wrote:
On Friday, March 25, 2011 22:40:12 Ondrej Zary wrote:
On Tuesday 22 March 2011 20:02:30 Hans Verkuil wrote:
BTW, can you run the v4l2-compliance utility for the two boards that use this radio tuner?
This utility is part of the v4l-utils repository (http://git.linuxtv.org/v4l-utils.git).
Run as 'v4l2-compliance -r /dev/radioX -v2'.
I'm sure there will be some errors/warnings (warnings regarding G/S_PRIORITY are to be expected). But I can use it to make a patch for 2.6.40 that fixes any issues.
The output is the same for both fm801 and es1968 (see below). Seems that there are 4 errors:
- multiple-open does not work
- something bad with s_frequency
- input functions are present
- no extended controls
Thanks for testing! Some comments are below...
Running on 2.6.38
Driver Info: Driver name : tea575x-tuner Card type : TEA5757 Bus info : PCI Driver version: 0.0.2 Capabilities : 0x00050000 Tuner Radio
Compliance test for device /dev/radio0 (not using libv4l2):
Required ioctls: test VIDIOC_QUERYCAP: OK
Allow for multiple opens: test second radio open: FAIL
I will fix this. Once 2.6.39-rc1 is released I can make a patch fixing this.
Debug ioctls: test VIDIOC_DBG_G_CHIP_IDENT: Not Supported test VIDIOC_DBG_G/S_REGISTER: Not Supported test VIDIOC_LOG_STATUS: Not Supported
Input ioctls: test VIDIOC_G/S_TUNER: OK fail: set rangehigh+1 frequency did not return EINVAL test VIDIOC_G/S_FREQUENCY: FAIL
Hmm, S_FREQUENCY apparently fails to check for valid frequency values. Can you take a quick look at the code?
The driver code is OK. But there is a bug in v4l2-test-input-output.cpp at line 214: if (ret) return fail("set rangehigh+1 frequency did not return EINVAL\n");
There should be "if (ret != EINVAL)" instead of "if (ret)".
Grrr. I hate it when test code has bugs :-)
Thanks for finding this. I've fixed it in the code and pushed it to the v4l-utils repository.
Regards,
Hans