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 v3 1/7] v4l: add new tuner types for SDR
Date: Tue, 17 Dec 2013 08:31:22 +0100 [thread overview]
Message-ID: <52AFFDCA.9030304@xs4all.nl> (raw)
In-Reply-To: <1387231688-8647-2-git-send-email-crope@iki.fi>
On 12/16/2013 11:08 PM, Antti Palosaari wrote:
> Define tuner types V4L2_TUNER_ADC and V4L2_TUNER_RF for SDR usage.
>
> ADC is used for setting sampling rate (sampling frequency) to SDR
> device.
>
> Another tuner type, named as V4L2_TUNER_RF, is possible RF tuner.
> Is is used to down-convert RF frequency to range ADC could sample.
> Having RF tuner is optional, whilst in practice it is almost always
> there.
>
> Also add checks to VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY and
> VIDIOC_ENUM_FREQ_BANDS only allow these two tuner types when device
> type is SDR (VFL_TYPE_SDR). For VIDIOC_G_FREQUENCY we do not check
> tuner type, instead override type with V4L2_TUNER_ADC in every
> case (requested by Hans in order to keep functionality in line with
> existing tuners and existing API does not specify it).
>
> Prohibit VIDIOC_S_HW_FREQ_SEEK explicitly when device type is SDR,
> as device cannot do hardware seek without a hardware demodulator.
>
> Cc: Hans Verkuil <hverkuil@xs4all.nl>
> Signed-off-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/v4l2-core/v4l2-ioctl.c | 39 ++++++++++++++++++++++++++----------
> include/uapi/linux/videodev2.h | 2 ++
> 2 files changed, 30 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> index 68e6b5e..04ec9f9 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -1288,8 +1288,11 @@ 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)
> + p->type = V4L2_TUNER_ADC;
> + else
> + p->type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> + V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> return ops->vidioc_g_frequency(file, fh, p);
> }
>
> @@ -1300,10 +1303,15 @@ static int v4l_s_frequency(const struct v4l2_ioctl_ops *ops,
> const struct v4l2_frequency *p = arg;
> enum v4l2_tuner_type type;
>
> - type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> - V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> - if (p->type != type)
> - return -EINVAL;
> + if (vfd->vfl_type == VFL_TYPE_SDR) {
> + if (p->type != V4L2_TUNER_ADC && p->type != V4L2_TUNER_RF)
> + return -EINVAL;
> + } else {
> + type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> + V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> + if (type != p->type)
> + return -EINVAL;
> + }
> return ops->vidioc_s_frequency(file, fh, p);
> }
>
> @@ -1383,6 +1391,10 @@ static int v4l_s_hw_freq_seek(const struct v4l2_ioctl_ops *ops,
> struct v4l2_hw_freq_seek *p = arg;
> enum v4l2_tuner_type type;
>
> + /* s_hw_freq_seek is not supported for SDR for now */
> + if (vfd->vfl_type == VFL_TYPE_SDR)
> + return -EINVAL;
> +
> type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> if (p->type != type)
> @@ -1882,11 +1894,16 @@ static int v4l_enum_freq_bands(const struct v4l2_ioctl_ops *ops,
> enum v4l2_tuner_type type;
> int err;
>
> - type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> - V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> -
> - if (type != p->type)
> - return -EINVAL;
> + if (vfd->vfl_type == VFL_TYPE_SDR) {
> + if (p->type != V4L2_TUNER_ADC && p->type != V4L2_TUNER_RF)
> + return -EINVAL;
> + type = p->type; /* silence compiler warning */
No need for the comment. 'type' is used later, so the compiler warning
makes sense.
After dropping this comment you can add my:
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
for this patch.
Regards,
Hans
> + } else {
> + type = (vfd->vfl_type == VFL_TYPE_RADIO) ?
> + V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
> + if (type != p->type)
> + return -EINVAL;
> + }
> if (ops->vidioc_enum_freq_bands)
> return ops->vidioc_enum_freq_bands(file, fh, p);
> if (is_valid_ioctl(vfd, VIDIOC_G_TUNER)) {
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 437f1b0..3fff116 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -159,6 +159,8 @@ enum v4l2_tuner_type {
> V4L2_TUNER_RADIO = 1,
> V4L2_TUNER_ANALOG_TV = 2,
> V4L2_TUNER_DIGITAL_TV = 3,
> + V4L2_TUNER_ADC = 4,
> + V4L2_TUNER_RF = 5,
> };
>
> enum v4l2_memory {
>
next prev parent reply other threads:[~2013-12-17 7:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-16 22:08 [PATCH RFC v3 0/7] SDR API Antti Palosaari
2013-12-16 22:08 ` [PATCH RFC v3 1/7] v4l: add new tuner types for SDR Antti Palosaari
2013-12-17 7:31 ` Hans Verkuil [this message]
2013-12-16 22:08 ` [PATCH RFC v3 2/7] v4l: 1 Hz resolution flag for tuners Antti Palosaari
2013-12-17 7:31 ` Hans Verkuil
2013-12-16 22:08 ` [PATCH RFC v3 3/7] v4l: add stream format for SDR receiver Antti Palosaari
2013-12-17 7:32 ` Hans Verkuil
2013-12-16 22:08 ` [PATCH RFC v3 4/7] v4l: define own IOCTL ops for SDR FMT Antti Palosaari
2013-12-17 7:32 ` Hans Verkuil
2013-12-16 22:08 ` [PATCH RFC v3 5/7] v4l: enable some IOCTLs for SDR receiver Antti Palosaari
2013-12-17 7:34 ` Hans Verkuil
2013-12-17 16:40 ` Antti Palosaari
2013-12-18 7:32 ` Hans Verkuil
2013-12-16 22:08 ` [PATCH RFC v3 6/7] rtl2832_sdr: convert to SDR API Antti Palosaari
2013-12-17 7:45 ` Hans Verkuil
2013-12-19 9:21 ` Hans Verkuil
2013-12-19 16:50 ` Antti Palosaari
2013-12-19 16:59 ` Devin Heitmueller
2013-12-19 18:38 ` Antti Palosaari
2013-12-19 19:12 ` Devin Heitmueller
2013-12-16 22:08 ` [PATCH RFC v3 7/7] msi3101: " Antti Palosaari
2013-12-17 7:36 ` [PATCH RFC v3 0/7] " Hans Verkuil
2013-12-17 16:46 ` Antti Palosaari
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=52AFFDCA.9030304@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.