Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f725cb3 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

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: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 91a97291
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -730,14 +730,10 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
		{
			struct v4l2_frequency *f = arg;

			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;
			}
			switch_v4l2();
			set_freq(client,f->frequency);

			break;