From: Hans Verkuil <hverkuil@xs4all.nl>
To: Antti Palosaari <crope@iki.fi>
Cc: linux-media@vger.kernel.org,
Mauro Carvalho Chehab <m.chehab@samsung.com>
Subject: Re: [PATCH RFC v2 3/7] v4l: add new tuner types for SDR
Date: Mon, 16 Dec 2013 13:50:58 +0100 [thread overview]
Message-ID: <52AEF732.5080908@xs4all.nl> (raw)
In-Reply-To: <52AEF3C9.9020906@iki.fi>
On 12/16/2013 01:36 PM, Antti Palosaari wrote:
> On 16.12.2013 10:53, Hans Verkuil wrote:
>> On 12/14/2013 05:15 PM, Antti Palosaari wrote:
>
>>> @@ -1288,8 +1288,13 @@ static int v4l_g_frequency(const struct v4l2_ioctl_ops *ops,
>>> struct video_device *vfd = video_devdata(file);
>>> struct v4l2_frequency *p = arg;
>>>
>>> - p->type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
>>> - V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
>>> + if (vfd->vfl_type == VFL_TYPE_SDR) {
>>> + if (p->type != V4L2_TUNER_ADC && p->type != V4L2_TUNER_RF)
>>> + return -EINVAL;
>>
>> This is wrong. As you mentioned in patch 1, the type field should always be set by
>> the driver. So type is not something that is set by the user.
>>
>> I would just set type to V4L2_TUNER_ADC here (all SDR devices have at least an ADC
>> tuner), and let the driver change it to TUNER_RF if this tuner is really an RF
>> tuner.
>
> I don't think so. It sounds very stupid to handle tuner type with
> different meaning in that single case - it sounds just a is a mistake
> (and that SDR case mistakes are not needed continue as no regressions
> apply). I can say I was very puzzled what is the reason my tuner type is
> always changed to wrong, until finally found it was overridden here.
>
> For me this looks more than it is just forced to "some" suitable value
> in a case app does not fill it correctly - not the way driver should
> return it to app. Tuner ID and type are here for Kernel driver could
> identify not the opposite and that is how it should be without unneeded
> exceptions.
>
> Also, API does not specify that kind of different meaning for tuner type
> in a case of g_frequency.
>
> Have to search some history where that odds is coming from...
The application *does not set type* when calling G_FREQUENCY. The driver has
to fill that in. So the type field as received from the application is
uninitialized. That's the way the spec was defined, and that's the way
applications use G_FREQUENCY. There is nothing you can do about that.
So drivers have to fill in the type based on vfl_type and the tuner index.
Since drivers often didn't do that the vfl_type check has been moved to the
v4l2 core. In the case of SDR the type is actually dependent on the tuner
index, so the core cannot fully initialize the type field.
You can either leave it uninitialized for vfl_type SDR and leave it to the
SDR driver to fill in the type, or you can set it to ADC so the driver
only has to update the type field if the tuner index corresponds to the
RF tuner.
Regards,
Hans
next prev parent reply other threads:[~2013-12-16 12:51 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-14 16:15 [PATCH RFC v2 0/7] V4L2 SDR API Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 1/7] v4l: don't clear VIDIOC_G_FREQUENCY tuner type Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 2/7] v4l: add device type for Software Defined Radio Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 3/7] v4l: add new tuner types for SDR Antti Palosaari
2013-12-16 8:53 ` Hans Verkuil
2013-12-16 12:36 ` Antti Palosaari
2013-12-16 12:50 ` Hans Verkuil [this message]
2013-12-16 14:19 ` Antti Palosaari
2013-12-16 14:25 ` Hans Verkuil
2013-12-16 14:41 ` Antti Palosaari
2013-12-16 14:57 ` Hans Verkuil
2013-12-14 16:15 ` [PATCH RFC v2 4/7] v4l: 1 Hz resolution flag for tuners Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 5/7] v4l: add stream format for SDR receiver Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 6/7] v4l: enable some IOCTLs " Antti Palosaari
2013-12-14 16:15 ` [PATCH RFC v2 7/7] v4l: define own IOCTL ops for SDR FMT Antti Palosaari
2013-12-14 16:24 ` Antti Palosaari
2013-12-15 11:23 ` Mauro Carvalho Chehab
2013-12-15 11:31 ` Hans Verkuil
2013-12-16 8:54 ` Hans Verkuil
2013-12-14 16:45 ` [PATCH RFC v2 0/7] V4L2 SDR API Antti Palosaari
2013-12-14 17:05 ` Hans Verkuil
2013-12-14 17:47 ` Antti Palosaari
2013-12-15 11:30 ` Mauro Carvalho Chehab
2013-12-16 16:50 ` Antti Palosaari
2013-12-16 17:09 ` Hans Verkuil
2013-12-16 8:55 ` Hans Verkuil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52AEF732.5080908@xs4all.nl \
--to=hverkuil@xs4all.nl \
--cc=crope@iki.fi \
--cc=linux-media@vger.kernel.org \
--cc=m.chehab@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox