[media] saa7134: v4l2-compliance: fix g_tuner/s_tuner
authorOndrej Zary <linux@rainbow-software.org>
Fri, 1 Feb 2013 23:01:18 +0000 (20:01 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 14 Apr 2013 22:27:09 +0000 (19:27 -0300)
Make saa7134 driver more V4L2 compliant: return real frequency range in
g_tuner and fail in s_tuner for non-zero tuner

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/pci/saa7134/saa7134-video.c

index 506a9f401db7ea4b520c9e1dcd15352a63cd2404..b832684b940a8810ede741f09c22c81fd89480ea 100644 (file)
@@ -2014,11 +2014,11 @@ static int saa7134_g_tuner(struct file *file, void *priv,
        if (NULL != card_in(dev, n).name) {
                strcpy(t->name, "Television");
                t->type = V4L2_TUNER_ANALOG_TV;
+               saa_call_all(dev, tuner, g_tuner, t);
                t->capability = V4L2_TUNER_CAP_NORM |
                        V4L2_TUNER_CAP_STEREO |
                        V4L2_TUNER_CAP_LANG1 |
                        V4L2_TUNER_CAP_LANG2;
-               t->rangehigh = 0xffffffffUL;
                t->rxsubchans = saa7134_tvaudio_getstereo(dev);
                t->audmode = saa7134_tvaudio_rx2mode(t->rxsubchans);
        }
@@ -2034,6 +2034,9 @@ static int saa7134_s_tuner(struct file *file, void *priv,
        struct saa7134_dev *dev = fh->dev;
        int rx, mode;
 
+       if (0 != t->index)
+               return -EINVAL;
+
        mode = dev->thread.mode;
        if (UNSET == mode) {
                rx   = saa7134_tvaudio_getstereo(dev);