[linux-dvb] [PATCH] Fixes to tuner-xc2028 DVB-T support

Aidan Thornton makosoft at googlemail.com
Sat Nov 17 14:35:16 CET 2007


A couple of fixes to tuner-xc2028's DVB-T support. Firstly, the
priv->bandwidth == 8 check is bogus; this isn't how priv->bandwidth
should be interpreted, and I think we want the F8MHZ base firmware for
all DTV anyway (though I may be wrong). Secondly, we shouldn't use the
audio hack or request an MTS firmware for DVB-T, since this is a
nonsensical combination that will result in no firmware being found.
(There is, however, an F8MHZ MTS BASE firmware; I have no idea what
it's for.)

Tested with a HVR-900 using 8Mhz DVB-T. Needs testing with the tm6000
and with 7 and 6Mhz bandwidth settings.

Signed-off-by: Aidan Thornton <makosoft at googlemail.com>

diff -r f0bec78a396c -r ae27b2cebf3f linux/drivers/media/video/tuner-xc2028.c
--- a/linux/drivers/media/video/tuner-xc2028.c	Fri Nov 16 20:12:16 2007 +0000
+++ b/linux/drivers/media/video/tuner-xc2028.c	Sat Nov 17 12:44:14 2007 +0000
@@ -614,11 +614,10 @@ static int check_firmware(struct dvb_fro

 		type0 = BASE;

-		if (priv->ctrl.type == XC2028_FIRM_MTS)
+		if (priv->mode == T_DIGITAL_TV)
+			type0 |= F8MHZ;
+		else if (priv->ctrl.type == XC2028_FIRM_MTS)
 			type0 |= MTS;
-
-		if (priv->bandwidth == 8)
-			type0 |= F8MHZ;

 		/* FIXME: How to load FM and FM|INPUT1 firmwares? */

@@ -640,6 +639,8 @@ static int check_firmware(struct dvb_fro
 	if (change_digital_bandwidth) {

 		/*FIXME: Should allow selecting between D2620 and D2633 */
+		/* For example, it looks like we want D2633 for DVB-T, at
+		   least on the HVR-900 - the signal strength is better */
 		type |= D2620;

 		/* FIXME: When should select a DTV78 firmware?
@@ -677,7 +678,7 @@ static int check_firmware(struct dvb_fro
 	/* FIXME: Should add support for FM radio
 	 */

-	if (priv->ctrl.type == XC2028_FIRM_MTS)
+	if (priv->mode == T_ANALOG_TV && priv->ctrl.type == XC2028_FIRM_MTS)
 		type |= MTS;

 	if (priv->firm_type & std) {
@@ -686,7 +687,8 @@ static int check_firmware(struct dvb_fro
 	}

 	/* Add audio hack to std mask */
-	std |= parse_audio_std_option();
+	if (priv->mode != T_DIGITAL_TV)
+		std |= parse_audio_std_option();

 	rc = load_firmware(fe, type, &std);
 	if (rc < 0)



More information about the linux-dvb mailing list