V4L/DVB (11933): tuner-simple, tveeprom: Add Philips FQ1216LME MK3 analog tuner
authorAndy Walls <awalls@radix.net>
Mon, 8 Jun 2009 00:39:03 +0000 (21:39 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 22:07:25 +0000 (19:07 -0300)
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Documentation/video4linux/CARDLIST.tuner
drivers/media/common/tuners/tuner-simple.c
drivers/media/common/tuners/tuner-types.c
drivers/media/video/tveeprom.c
include/media/tuner.h

index 22c1c55979c19e5f8c88cea1f6c9fc7ec2967b5c..be67844074dd1f3c31430dc75a70ccc9a53be24a 100644 (file)
@@ -77,3 +77,4 @@ tuner=76 - Xceive 5000 tuner
 tuner=77 - TCL tuner MF02GIP-5N-E
 tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner
 tuner=79 - Philips PAL/SECAM multi (FM1216 MK5)
+tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough
index 78412c9c424a13e492a59ad467368716755be6b2..a5eb6592abe2788e73233ca521a73035e3097461 100644 (file)
@@ -416,6 +416,24 @@ static int simple_std_setup(struct dvb_frontend *fe,
        return 0;
 }
 
+static int simple_set_aux_byte(struct dvb_frontend *fe, u8 config, u8 aux)
+{
+       struct tuner_simple_priv *priv = fe->tuner_priv;
+       int rc;
+       u8 buffer[2];
+
+       buffer[0] = (config & ~0x38) | 0x18;
+       buffer[1] = aux;
+
+       tuner_dbg("setting aux byte: 0x%02x 0x%02x\n", buffer[0], buffer[1]);
+
+       rc = tuner_i2c_xfer_send(&priv->i2c_props, buffer, 2);
+       if (2 != rc)
+               tuner_warn("i2c i/o error: rc == %d (should be 2)\n", rc);
+
+       return rc == 2 ? 0 : rc;
+}
+
 static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer,
                            u16 div, u8 config, u8 cb)
 {
@@ -424,17 +442,10 @@ static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer,
 
        switch (priv->type) {
        case TUNER_LG_TDVS_H06XF:
-               /* Set the Auxiliary Byte. */
-               buffer[0] = buffer[2];
-               buffer[0] &= ~0x20;
-               buffer[0] |= 0x18;
-               buffer[1] = 0x20;
-               tuner_dbg("tv 0x%02x 0x%02x\n", buffer[0], buffer[1]);
-
-               rc = tuner_i2c_xfer_send(&priv->i2c_props, buffer, 2);
-               if (2 != rc)
-                       tuner_warn("i2c i/o error: rc == %d "
-                                  "(should be 2)\n", rc);
+               simple_set_aux_byte(fe, config, 0x20);
+               break;
+       case TUNER_PHILIPS_FQ1216LME_MK3:
+               simple_set_aux_byte(fe, config, 0x60); /* External AGC */
                break;
        case TUNER_MICROTUNE_4042FI5:
        {
@@ -506,6 +517,11 @@ static int simple_radio_bandswitch(struct dvb_frontend *fe, u8 *buffer)
        case TUNER_THOMSON_DTT761X:
                buffer[3] = 0x39;
                break;
+       case TUNER_PHILIPS_FQ1216LME_MK3:
+               tuner_err("This tuner doesn't have FM\n");
+               /* Set the low band for sanity, since it covers 88-108 MHz */
+               buffer[3] = 0x01;
+               break;
        case TUNER_MICROTUNE_4049FM5:
        default:
                buffer[3] = 0xa4;
index a9ce5b2ce08287bf113b0348cd773dc1482fd2bd..6a7f1a417c278eff34d835029b4894fde8cedd48 100644 (file)
@@ -1279,6 +1279,28 @@ static struct tuner_params tuner_tcl_mf02gip_5n_params[] = {
        },
 };
 
+/* 80-89 */
+/* --------- TUNER_PHILIPS_FQ1216LME_MK3 -- active loopthrough, no FM ------- */
+
+static struct tuner_params tuner_fq1216lme_mk3_params[] = {
+       {
+               .type   = TUNER_PARAM_TYPE_PAL,
+               .ranges = tuner_fm1216me_mk3_pal_ranges,
+               .count  = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
+               .cb_first_if_lower_freq = 1, /* not specified, but safe to do */
+               .has_tda9887 = 1, /* TDA9886 */
+               .port1_active = 1,
+               .port2_active = 1,
+               .port2_invert_for_secam_lc = 1,
+               .default_top_low = 4,
+               .default_top_mid = 4,
+               .default_top_high = 4,
+               .default_top_secam_low = 4,
+               .default_top_secam_mid = 4,
+               .default_top_secam_high = 4,
+       },
+};
+
 /* --------------------------------------------------------------------- */
 
 struct tunertype tuners[] = {
@@ -1724,6 +1746,13 @@ struct tunertype tuners[] = {
                .params = tuner_fm1216mk5_params,
                .count  = ARRAY_SIZE(tuner_fm1216mk5_params),
        },
+
+       /* 80-89 */
+       [TUNER_PHILIPS_FQ1216LME_MK3] = { /* PAL/SECAM, Loop-thru, no FM */
+               .name = "Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough",
+               .params = tuner_fq1216lme_mk3_params,
+               .count  = ARRAY_SIZE(tuner_fq1216lme_mk3_params),
+       },
 };
 EXPORT_SYMBOL(tuners);
 
index d0de03c6e68a6c3c225c62619d9a275b169aa8f2..ac02808106c145120fbb49c72eecc85d5a54ac9c 100644 (file)
@@ -184,7 +184,7 @@ hauppauge_tuner[] =
        { TUNER_ABSENT,                 "Silicon TDA8275C1 8290 FM"},
        { TUNER_ABSENT,                 "Thompson DTT757"},
        /* 80-89 */
-       { TUNER_PHILIPS_FM1216ME_MK3,   "Philips FQ1216LME MK3"},
+       { TUNER_PHILIPS_FQ1216LME_MK3,  "Philips FQ1216LME MK3"},
        { TUNER_LG_PAL_NEW_TAPC,        "LG TAPC G701D"},
        { TUNER_LG_NTSC_NEW_TAPC,       "LG TAPC H791F"},
        { TUNER_LG_PAL_NEW_TAPC,        "TCL 2002MB 3"},
@@ -229,7 +229,7 @@ hauppauge_tuner[] =
        { TUNER_ABSENT,                 "Samsung THPD5222FG30A"},
        /* 120-129 */
        { TUNER_XC2028,                 "Xceive XC3028"},
-       { TUNER_ABSENT,                 "Philips FQ1216LME MK5"},
+       { TUNER_PHILIPS_FQ1216LME_MK3,  "Philips FQ1216LME MK5"},
        { TUNER_ABSENT,                 "Philips FQD1216LME"},
        { TUNER_ABSENT,                 "Conexant CX24118A"},
        { TUNER_ABSENT,                 "TCL DMF11WIP"},
index 735a2a94116605f4ba7b91b7a2c8ce6d25138e2a..cbf97f45fbec3abd6dde9da35c074de6bc20e36f 100644 (file)
 #define TUNER_TCL_MF02GIP_5N           77      /* TCL MF02GIP_5N */
 #define TUNER_PHILIPS_FMD1216MEX_MK3   78
 #define TUNER_PHILIPS_FM1216MK5                79
+#define TUNER_PHILIPS_FQ1216LME_MK3    80      /* Active loopthrough, no FM */
 
 /* tv card specific */
 #define TDA9887_PRESENT                (1<<0)