V4L/DVB (7358): tuner-simple: enable digital tuning support for Philips TD1316
authorMichael Krufky <mkrufky@linuxtv.org>
Tue, 22 Apr 2008 17:45:56 +0000 (14:45 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:50 +0000 (14:07 -0300)
Enable digital tuning support within tuner-simple. This will allow for a
single tuner module to manage the hardware, without having dvb-pll loaded.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/tuner-simple.c
drivers/media/video/tuner-types.c

index 8ecd923..5356c8a 100644 (file)
@@ -756,6 +756,15 @@ static void simple_set_dvb(struct dvb_frontend *fe, u8 *buf,
                    params->frequency >= 158870000)
                        buf[3] |= 0x08;
                break;
+       case TUNER_PHILIPS_TD1316:
+               /* determine band */
+               buf[3] |= (params->frequency < 161000000) ? 1 :
+                         (params->frequency < 444000000) ? 2 : 4;
+
+               /* setup PLL filter */
+               if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ)
+                       buf[3] |= 1 << 3;
+               break;
        case TUNER_PHILIPS_TUV1236D:
        case TUNER_PHILIPS_ATSC:
        {
index db33205..afb88ff 100644 (file)
@@ -1063,12 +1063,30 @@ static struct tuner_range tuner_philips_td1316_pal_ranges[] = {
        { 16 * 999.99        , 0xc8, 0xa4, },
 };
 
+static struct tuner_range tuner_philips_td1316_dvb_ranges[] = {
+       { 16 *  93.834 /*MHz*/, 0xca, 0x60, },
+       { 16 * 123.834 /*MHz*/, 0xca, 0xa0, },
+       { 16 * 163.834 /*MHz*/, 0xca, 0xc0, },
+       { 16 * 253.834 /*MHz*/, 0xca, 0x60, },
+       { 16 * 383.834 /*MHz*/, 0xca, 0xa0, },
+       { 16 * 443.834 /*MHz*/, 0xca, 0xc0, },
+       { 16 * 583.834 /*MHz*/, 0xca, 0x60, },
+       { 16 * 793.834 /*MHz*/, 0xca, 0xa0, },
+       { 16 * 999.999        , 0xca, 0xe0, },
+};
+
 static struct tuner_params tuner_philips_td1316_params[] = {
        {
                .type   = TUNER_PARAM_TYPE_PAL,
                .ranges = tuner_philips_td1316_pal_ranges,
                .count  = ARRAY_SIZE(tuner_philips_td1316_pal_ranges),
        },
+       {
+               .type   = TUNER_PARAM_TYPE_DIGITAL,
+               .ranges = tuner_philips_td1316_dvb_ranges,
+               .count  = ARRAY_SIZE(tuner_philips_td1316_dvb_ranges),
+               .iffreq = 16 * 36.166667 /*MHz*/,
+       },
 };
 
 /* ------------ TUNER_PHILIPS_TUV1236D - Philips ATSC ------------ */
@@ -1556,6 +1574,9 @@ struct tunertype tuners[] = {
                .name   = "Philips TD1316 Hybrid Tuner",
                .params = tuner_philips_td1316_params,
                .count  = ARRAY_SIZE(tuner_philips_td1316_params),
+               .min    = 16 *  87.00,
+               .max    = 16 * 895.00,
+               .stepsize = 166667,
        },
        [TUNER_PHILIPS_TUV1236D] = { /* Philips ATSC */
                .name   = "Philips TUV1236D ATSC/NTSC dual in",