mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 20:01:55 +00:00
V4L/DVB (4222): Always switch tuner mode when calling VIDIOC_S_FREQUENCY.
Fixes the weird and incorrect condition in VIDIOC_S_FREQUENCY. The tuner should always be switched to the mode specified in the v4l2_frequency struct. Much simpler and also corresponding to the v4l2 specification. The old condition made it impossible to switch from radio to analog tv mode using VIDIOC_S_FREQUENCY. Instead the (tv) frequency would be given to the radio tuner. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
91a972910d
commit
4f725cb3fa
@ -730,14 +730,10 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
|
||||
{
|
||||
struct v4l2_frequency *f = arg;
|
||||
|
||||
if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY")
|
||||
== EINVAL)
|
||||
return 0;
|
||||
switch_v4l2();
|
||||
if ((V4L2_TUNER_RADIO == f->type && V4L2_TUNER_RADIO != t->mode)
|
||||
|| (V4L2_TUNER_DIGITAL_TV == f->type
|
||||
&& V4L2_TUNER_DIGITAL_TV != t->mode)) {
|
||||
if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY")
|
||||
== EINVAL)
|
||||
return 0;
|
||||
}
|
||||
set_freq(client,f->frequency);
|
||||
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user