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 <[EMAIL PROTECTED]>

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)

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

Reply via email to