V4L/DVB (12810): tm6000: Avoid sending xc3028 setups for other tuners
authorMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 2 Nov 2007 14:23:14 +0000 (11:23 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 18 May 2010 03:39:54 +0000 (00:39 -0300)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/tm6000/tm6000-cards.c

index c608634..6adf937 100644 (file)
@@ -164,15 +164,19 @@ static void tm6000_config_tuner (struct tm6000_core *dev)
 
        memset (&ctl,0,sizeof(ctl));
 
-       ctl.fname = "tm6000-xc3028.fw";
-       ctl.type  = XC2028_FIRM_MTS;
+       request_module ("tuner");
+
+       if (dev->tuner_type == TUNER_XC2028) {
+               ctl.fname = "tm6000-xc3028.fw";
+               ctl.type  = XC2028_FIRM_MTS;
 
-       xc2028_cfg.tuner = TUNER_XC2028;
-       xc2028_cfg.priv  = &ctl;
+               xc2028_cfg.tuner = TUNER_XC2028;
+               xc2028_cfg.priv  = &ctl;
 
-printk("Setting firmware parameters for tm6000\n");
+               printk(KERN_INFO "Setting firmware parameters for xc2028\n");
 
-       tm6000_i2c_call_clients(dev, TUNER_SET_CONFIG, &xc2028_cfg);
+               tm6000_i2c_call_clients(dev, TUNER_SET_CONFIG, &xc2028_cfg);
+       }
 }
 
 static int tm6000_init_dev(struct tm6000_core *dev)
@@ -208,22 +212,24 @@ static int tm6000_init_dev(struct tm6000_core *dev)
        if (rc<0)
                goto err;
 
-       /* Request tuner */
-       request_module ("tuner");
+       /* Default values for STD and resolutions */
+       dev->width = 720;
+       dev->height = 480;
+       dev->norm = V4L2_STD_PAL_M;
 
+       /* Configure tuner */
        tm6000_config_tuner (dev);
 
-//     norm=V4L2_STD_NTSC_M;
-       dev->norm=V4L2_STD_PAL_M;
+       /* Set video standard */
        tm6000_i2c_call_clients(dev, VIDIOC_S_STD, &dev->norm);
 
-       /* configure tuner */
+       /* Set tuner frequency - also loads firmware on xc2028/xc3028 */
        f.tuner = 0;
        f.type = V4L2_TUNER_ANALOG_TV;
        f.frequency = 3092;     /* 193.25 MHz */
        dev->freq = f.frequency;
-
        tm6000_i2c_call_clients(dev, VIDIOC_S_FREQUENCY, &f);
+
        if(dev->caps.has_dvb) {
                dev->dvb = kzalloc(sizeof(*(dev->dvb)), GFP_KERNEL);
                if(!dev->dvb) {