V4L/DVB (12942): SAA7164: HVR2250 changes related to attach time tuner configuration

Ensure that by default all tuners are set correctly to master/slave mode.
For all HVR2250's, ensure slave based tuners are caliberated during attach
to avoid locking problems on tuner# above channel 91.

HVR2200 tuner attach time to be reviewed in a future patch.

Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/saa7164/saa7164-dvb.c b/drivers/media/video/saa7164/saa7164-dvb.c
index 258eab5..238efc9 100644
--- a/drivers/media/video/saa7164/saa7164-dvb.c
+++ b/drivers/media/video/saa7164/saa7164-dvb.c
@@ -61,6 +61,14 @@
 static struct tda18271_config hauppauge_hvr22x0_tuner_config = {
 	.std_map	= &hauppauge_tda18271_std_map,
 	.gate		= TDA18271_GATE_ANALOG,
+	.role		= TDA18271_MASTER,
+};
+
+static struct tda18271_config hauppauge_hvr22x0s_tuner_config = {
+	.std_map	= &hauppauge_tda18271_std_map,
+	.gate		= TDA18271_GATE_ANALOG,
+	.role		= TDA18271_SLAVE,
+	.rf_cal_on_startup = 1
 };
 
 static struct s5h1411_config hauppauge_s5h1411_config = {
@@ -554,10 +562,18 @@
 			&i2c_bus->i2c_adap);
 
 		if (port->dvb.frontend != NULL) {
-			/* TODO: addr is in the card struct */
-			dvb_attach(tda18271_attach, port->dvb.frontend,
-				0xc0 >> 1, &i2c_bus->i2c_adap,
-				&hauppauge_hvr22x0_tuner_config);
+			if (port->nr == 0) {
+				/* Master TDA18271 */
+				/* TODO: addr is in the card struct */
+				dvb_attach(tda18271_attach, port->dvb.frontend,
+					0xc0 >> 1, &i2c_bus->i2c_adap,
+					&hauppauge_hvr22x0_tuner_config);
+			} else {
+				/* Slave TDA18271 */
+				dvb_attach(tda18271_attach, port->dvb.frontend,
+					0xc0 >> 1, &i2c_bus->i2c_adap,
+					&hauppauge_hvr22x0s_tuner_config);
+			}
 		}
 
 		break;