From cc27a8c275ff5a1d2b7cffbb5b8e96509d4231b9 Mon Sep 17 00:00:00 2001
From: Mauro Carvalho Chehab <mchehab@redhat.com>
Date: Fri, 2 Nov 2007 11:23:14 -0300
Subject: [PATCH] V4L/DVB (12810): tm6000: Avoid sending xc3028 setups for
 other tuners

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/staging/tm6000/tm6000-cards.c | 30 ++++++++++++++++-----------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
index c60863470180..6adf9376b80c 100644
--- a/drivers/staging/tm6000/tm6000-cards.c
+++ b/drivers/staging/tm6000/tm6000-cards.c
@@ -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) {
-- 
2.20.1