diff options
author | Andy Walls <awalls@radix.net> | 2009-06-07 20:39:03 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 18:07:25 -0400 |
commit | 5ddc9b100fc96e8f3c6d435cecd9d09e5b9673f9 (patch) | |
tree | c5a25e1cdb82741a85f239c378b07ab3ad7fa953 | |
parent | 7360055aa31f5f732af4d0ed23517f1b6adfa573 (diff) |
V4L/DVB (11933): tuner-simple, tveeprom: Add Philips FQ1216LME MK3 analog tuner
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | Documentation/video4linux/CARDLIST.tuner | 1 | ||||
-rw-r--r-- | drivers/media/common/tuners/tuner-simple.c | 38 | ||||
-rw-r--r-- | drivers/media/common/tuners/tuner-types.c | 29 | ||||
-rw-r--r-- | drivers/media/video/tveeprom.c | 4 | ||||
-rw-r--r-- | include/media/tuner.h | 1 |
5 files changed, 60 insertions, 13 deletions
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner index 22c1c55979c1..be67844074dd 100644 --- a/Documentation/video4linux/CARDLIST.tuner +++ b/Documentation/video4linux/CARDLIST.tuner | |||
@@ -77,3 +77,4 @@ tuner=76 - Xceive 5000 tuner | |||
77 | tuner=77 - TCL tuner MF02GIP-5N-E | 77 | tuner=77 - TCL tuner MF02GIP-5N-E |
78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner | 78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner |
79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) | 79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) |
80 | tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough | ||
diff --git a/drivers/media/common/tuners/tuner-simple.c b/drivers/media/common/tuners/tuner-simple.c index 78412c9c424a..a5eb6592abe2 100644 --- a/drivers/media/common/tuners/tuner-simple.c +++ b/drivers/media/common/tuners/tuner-simple.c | |||
@@ -416,6 +416,24 @@ static int simple_std_setup(struct dvb_frontend *fe, | |||
416 | return 0; | 416 | return 0; |
417 | } | 417 | } |
418 | 418 | ||
419 | static int simple_set_aux_byte(struct dvb_frontend *fe, u8 config, u8 aux) | ||
420 | { | ||
421 | struct tuner_simple_priv *priv = fe->tuner_priv; | ||
422 | int rc; | ||
423 | u8 buffer[2]; | ||
424 | |||
425 | buffer[0] = (config & ~0x38) | 0x18; | ||
426 | buffer[1] = aux; | ||
427 | |||
428 | tuner_dbg("setting aux byte: 0x%02x 0x%02x\n", buffer[0], buffer[1]); | ||
429 | |||
430 | rc = tuner_i2c_xfer_send(&priv->i2c_props, buffer, 2); | ||
431 | if (2 != rc) | ||
432 | tuner_warn("i2c i/o error: rc == %d (should be 2)\n", rc); | ||
433 | |||
434 | return rc == 2 ? 0 : rc; | ||
435 | } | ||
436 | |||
419 | static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer, | 437 | static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer, |
420 | u16 div, u8 config, u8 cb) | 438 | u16 div, u8 config, u8 cb) |
421 | { | 439 | { |
@@ -424,17 +442,10 @@ static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer, | |||
424 | 442 | ||
425 | switch (priv->type) { | 443 | switch (priv->type) { |
426 | case TUNER_LG_TDVS_H06XF: | 444 | case TUNER_LG_TDVS_H06XF: |
427 | /* Set the Auxiliary Byte. */ | 445 | simple_set_aux_byte(fe, config, 0x20); |
428 | buffer[0] = buffer[2]; | 446 | break; |
429 | buffer[0] &= ~0x20; | 447 | case TUNER_PHILIPS_FQ1216LME_MK3: |
430 | buffer[0] |= 0x18; | 448 | simple_set_aux_byte(fe, config, 0x60); /* External AGC */ |
431 | buffer[1] = 0x20; | ||
432 | tuner_dbg("tv 0x%02x 0x%02x\n", buffer[0], buffer[1]); | ||
433 | |||
434 | rc = tuner_i2c_xfer_send(&priv->i2c_props, buffer, 2); | ||
435 | if (2 != rc) | ||
436 | tuner_warn("i2c i/o error: rc == %d " | ||
437 | "(should be 2)\n", rc); | ||
438 | break; | 449 | break; |
439 | case TUNER_MICROTUNE_4042FI5: | 450 | case TUNER_MICROTUNE_4042FI5: |
440 | { | 451 | { |
@@ -506,6 +517,11 @@ static int simple_radio_bandswitch(struct dvb_frontend *fe, u8 *buffer) | |||
506 | case TUNER_THOMSON_DTT761X: | 517 | case TUNER_THOMSON_DTT761X: |
507 | buffer[3] = 0x39; | 518 | buffer[3] = 0x39; |
508 | break; | 519 | break; |
520 | case TUNER_PHILIPS_FQ1216LME_MK3: | ||
521 | tuner_err("This tuner doesn't have FM\n"); | ||
522 | /* Set the low band for sanity, since it covers 88-108 MHz */ | ||
523 | buffer[3] = 0x01; | ||
524 | break; | ||
509 | case TUNER_MICROTUNE_4049FM5: | 525 | case TUNER_MICROTUNE_4049FM5: |
510 | default: | 526 | default: |
511 | buffer[3] = 0xa4; | 527 | buffer[3] = 0xa4; |
diff --git a/drivers/media/common/tuners/tuner-types.c b/drivers/media/common/tuners/tuner-types.c index a9ce5b2ce082..6a7f1a417c27 100644 --- a/drivers/media/common/tuners/tuner-types.c +++ b/drivers/media/common/tuners/tuner-types.c | |||
@@ -1279,6 +1279,28 @@ static struct tuner_params tuner_tcl_mf02gip_5n_params[] = { | |||
1279 | }, | 1279 | }, |
1280 | }; | 1280 | }; |
1281 | 1281 | ||
1282 | /* 80-89 */ | ||
1283 | /* --------- TUNER_PHILIPS_FQ1216LME_MK3 -- active loopthrough, no FM ------- */ | ||
1284 | |||
1285 | static struct tuner_params tuner_fq1216lme_mk3_params[] = { | ||
1286 | { | ||
1287 | .type = TUNER_PARAM_TYPE_PAL, | ||
1288 | .ranges = tuner_fm1216me_mk3_pal_ranges, | ||
1289 | .count = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges), | ||
1290 | .cb_first_if_lower_freq = 1, /* not specified, but safe to do */ | ||
1291 | .has_tda9887 = 1, /* TDA9886 */ | ||
1292 | .port1_active = 1, | ||
1293 | .port2_active = 1, | ||
1294 | .port2_invert_for_secam_lc = 1, | ||
1295 | .default_top_low = 4, | ||
1296 | .default_top_mid = 4, | ||
1297 | .default_top_high = 4, | ||
1298 | .default_top_secam_low = 4, | ||
1299 | .default_top_secam_mid = 4, | ||
1300 | .default_top_secam_high = 4, | ||
1301 | }, | ||
1302 | }; | ||
1303 | |||
1282 | /* --------------------------------------------------------------------- */ | 1304 | /* --------------------------------------------------------------------- */ |
1283 | 1305 | ||
1284 | struct tunertype tuners[] = { | 1306 | struct tunertype tuners[] = { |
@@ -1724,6 +1746,13 @@ struct tunertype tuners[] = { | |||
1724 | .params = tuner_fm1216mk5_params, | 1746 | .params = tuner_fm1216mk5_params, |
1725 | .count = ARRAY_SIZE(tuner_fm1216mk5_params), | 1747 | .count = ARRAY_SIZE(tuner_fm1216mk5_params), |
1726 | }, | 1748 | }, |
1749 | |||
1750 | /* 80-89 */ | ||
1751 | [TUNER_PHILIPS_FQ1216LME_MK3] = { /* PAL/SECAM, Loop-thru, no FM */ | ||
1752 | .name = "Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough", | ||
1753 | .params = tuner_fq1216lme_mk3_params, | ||
1754 | .count = ARRAY_SIZE(tuner_fq1216lme_mk3_params), | ||
1755 | }, | ||
1727 | }; | 1756 | }; |
1728 | EXPORT_SYMBOL(tuners); | 1757 | EXPORT_SYMBOL(tuners); |
1729 | 1758 | ||
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c index d0de03c6e68a..ac02808106c1 100644 --- a/drivers/media/video/tveeprom.c +++ b/drivers/media/video/tveeprom.c | |||
@@ -184,7 +184,7 @@ hauppauge_tuner[] = | |||
184 | { TUNER_ABSENT, "Silicon TDA8275C1 8290 FM"}, | 184 | { TUNER_ABSENT, "Silicon TDA8275C1 8290 FM"}, |
185 | { TUNER_ABSENT, "Thompson DTT757"}, | 185 | { TUNER_ABSENT, "Thompson DTT757"}, |
186 | /* 80-89 */ | 186 | /* 80-89 */ |
187 | { TUNER_PHILIPS_FM1216ME_MK3, "Philips FQ1216LME MK3"}, | 187 | { TUNER_PHILIPS_FQ1216LME_MK3, "Philips FQ1216LME MK3"}, |
188 | { TUNER_LG_PAL_NEW_TAPC, "LG TAPC G701D"}, | 188 | { TUNER_LG_PAL_NEW_TAPC, "LG TAPC G701D"}, |
189 | { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"}, | 189 | { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"}, |
190 | { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"}, | 190 | { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"}, |
@@ -229,7 +229,7 @@ hauppauge_tuner[] = | |||
229 | { TUNER_ABSENT, "Samsung THPD5222FG30A"}, | 229 | { TUNER_ABSENT, "Samsung THPD5222FG30A"}, |
230 | /* 120-129 */ | 230 | /* 120-129 */ |
231 | { TUNER_XC2028, "Xceive XC3028"}, | 231 | { TUNER_XC2028, "Xceive XC3028"}, |
232 | { TUNER_ABSENT, "Philips FQ1216LME MK5"}, | 232 | { TUNER_PHILIPS_FQ1216LME_MK3, "Philips FQ1216LME MK5"}, |
233 | { TUNER_ABSENT, "Philips FQD1216LME"}, | 233 | { TUNER_ABSENT, "Philips FQD1216LME"}, |
234 | { TUNER_ABSENT, "Conexant CX24118A"}, | 234 | { TUNER_ABSENT, "Conexant CX24118A"}, |
235 | { TUNER_ABSENT, "TCL DMF11WIP"}, | 235 | { TUNER_ABSENT, "TCL DMF11WIP"}, |
diff --git a/include/media/tuner.h b/include/media/tuner.h index 735a2a941166..cbf97f45fbec 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -125,6 +125,7 @@ | |||
125 | #define TUNER_TCL_MF02GIP_5N 77 /* TCL MF02GIP_5N */ | 125 | #define TUNER_TCL_MF02GIP_5N 77 /* TCL MF02GIP_5N */ |
126 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78 | 126 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78 |
127 | #define TUNER_PHILIPS_FM1216MK5 79 | 127 | #define TUNER_PHILIPS_FM1216MK5 79 |
128 | #define TUNER_PHILIPS_FQ1216LME_MK3 80 /* Active loopthrough, no FM */ | ||
128 | 129 | ||
129 | /* tv card specific */ | 130 | /* tv card specific */ |
130 | #define TDA9887_PRESENT (1<<0) | 131 | #define TDA9887_PRESENT (1<<0) |