[media] ivtv: fix v4l2-compliance error: inconsistent std reporting
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 5 Sep 2012 11:56:55 +0000 (08:56 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 1 Oct 2012 20:13:59 +0000 (17:13 -0300)
The tuner input has a different standard mask than a S-Video or Composite input.
Changing the standard should change tvnorms as well for all device nodes.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/pci/ivtv/ivtv-ioctl.c

index 0b0250a7583f5699f6fdcf0402c24d16e4154648..e5ce970266f33217cdf0b43fde09940b73b045f1 100644 (file)
@@ -987,6 +987,8 @@ static int ivtv_g_input(struct file *file, void *fh, unsigned int *i)
 int ivtv_s_input(struct file *file, void *fh, unsigned int inp)
 {
        struct ivtv *itv = fh2id(fh)->itv;
+       v4l2_std_id std;
+       int i;
 
        if (inp < 0 || inp >= itv->nof_inputs)
                return -EINVAL;
@@ -1008,6 +1010,13 @@ int ivtv_s_input(struct file *file, void *fh, unsigned int inp)
           input type. */
        itv->audio_input = itv->card->video_inputs[inp].audio_index;
 
+       if (itv->card->video_inputs[inp].video_type == IVTV_CARD_INPUT_VID_TUNER)
+               std = itv->tuner_std;
+       else
+               std = V4L2_STD_ALL;
+       for (i = 0; i <= IVTV_ENC_STREAM_TYPE_VBI; i++)
+               itv->streams[i].vdev->tvnorms = std;
+
        /* prevent others from messing with the streams until
           we're finished changing inputs. */
        ivtv_mute(itv);