[media] tea575x-tuner: mark VIDIOC_S_HW_FREQ_SEEK as an invalid ioctl
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 10 May 2012 06:16:14 +0000 (03:16 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 14 May 2012 12:17:52 +0000 (09:17 -0300)
The tea575x-tuner framework can support the VIDIOC_S_HW_FREQ_SEEK for only
some of the tea575x-based boards. Mark this ioctl as invalid if the board
doesn't support it.

This fixes an issue with S_HW_FREQ_SEEK in combination with priority handling:
since the priority check is done first it could return -EBUSY, even though
calling the S_HW_FREQ_SEEK ioctl would return -ENOTTY. It should always return
ENOTTY in such a case.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
sound/i2c/other/tea575x-tuner.c

index a63faec5e7fdf8eec6d2ec4abbbc322e3dd09364..6e9ca7bd0f1146017448b36c187a85aa203302d8 100644 (file)
@@ -375,6 +375,9 @@ int snd_tea575x_init(struct snd_tea575x *tea)
        tea->vd.v4l2_dev = tea->v4l2_dev;
        tea->vd.ctrl_handler = &tea->ctrl_handler;
        set_bit(V4L2_FL_USE_FH_PRIO, &tea->vd.flags);
+       /* disable hw_freq_seek if we can't use it */
+       if (tea->cannot_read_data)
+               v4l2_dont_use_cmd(&tea->vd, VIDIOC_S_HW_FREQ_SEEK);
 
        v4l2_ctrl_handler_init(&tea->ctrl_handler, 1);
        v4l2_ctrl_new_std(&tea->ctrl_handler, &tea575x_ctrl_ops, V4L2_CID_AUDIO_MUTE, 0, 1, 1, 1);