V4L/DVB (12167): tuner-xc2028: Fix 7 MHz DVB-T
authorAndy Walls <awalls@radix.net>
Thu, 11 Jun 2009 10:57:50 +0000 (07:57 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 5 Jul 2009 17:29:57 +0000 (14:29 -0300)
The following patch should fix 7 MHz DVB-T with the XC3028 using the
DTV7 firmware from the xc3028-v27.fw firmware image.

Tested-by: Terry Wu <terrywu2009@gmail.com>
[mchehab@redhat.com: thanks to John Ferlito, we have a real test in Australia]
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tuner-xc2028.c

index b6da9c3873fef280ba89d00234053d3a62b11ec6..aa20ce8cc668ba96b566d3aa45119a6b93e37889 100644 (file)
@@ -1096,8 +1096,19 @@ static int xc2028_set_params(struct dvb_frontend *fe,
        }
 
        /* All S-code tables need a 200kHz shift */
-       if (priv->ctrl.demod)
+       if (priv->ctrl.demod) {
                demod = priv->ctrl.demod + 200;
+               /*
+                * The DTV7 S-code table needs a 700 kHz shift.
+                * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this
+                *
+                * DTV7 is only used in Australia.  Germany or Italy may also
+                * use this firmware after initialization, but a tune to a UHF
+                * channel should then cause DTV78 to be used.
+                */
+               if (type & DTV7)
+                       demod += 500;
+       }
 
        return generic_set_freq(fe, p->frequency,
                                T_DIGITAL_TV, type, 0, demod);