mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
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>
This commit is contained in:
parent
7360055aa3
commit
5ddc9b100f
@ -77,3 +77,4 @@ tuner=76 - Xceive 5000 tuner
|
|||||||
tuner=77 - TCL tuner MF02GIP-5N-E
|
tuner=77 - TCL tuner MF02GIP-5N-E
|
||||||
tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner
|
tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner
|
||||||
tuner=79 - Philips PAL/SECAM multi (FM1216 MK5)
|
tuner=79 - Philips PAL/SECAM multi (FM1216 MK5)
|
||||||
|
tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough
|
||||||
|
@ -416,6 +416,24 @@ static int simple_std_setup(struct dvb_frontend *fe,
|
|||||||
return 0;
|
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,
|
static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer,
|
||||||
u16 div, u8 config, u8 cb)
|
u16 div, u8 config, u8 cb)
|
||||||
{
|
{
|
||||||
@ -424,17 +442,10 @@ static int simple_post_tune(struct dvb_frontend *fe, u8 *buffer,
|
|||||||
|
|
||||||
switch (priv->type) {
|
switch (priv->type) {
|
||||||
case TUNER_LG_TDVS_H06XF:
|
case TUNER_LG_TDVS_H06XF:
|
||||||
/* Set the Auxiliary Byte. */
|
simple_set_aux_byte(fe, config, 0x20);
|
||||||
buffer[0] = buffer[2];
|
break;
|
||||||
buffer[0] &= ~0x20;
|
case TUNER_PHILIPS_FQ1216LME_MK3:
|
||||||
buffer[0] |= 0x18;
|
simple_set_aux_byte(fe, config, 0x60); /* External AGC */
|
||||||
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);
|
|
||||||
break;
|
break;
|
||||||
case TUNER_MICROTUNE_4042FI5:
|
case TUNER_MICROTUNE_4042FI5:
|
||||||
{
|
{
|
||||||
@ -506,6 +517,11 @@ static int simple_radio_bandswitch(struct dvb_frontend *fe, u8 *buffer)
|
|||||||
case TUNER_THOMSON_DTT761X:
|
case TUNER_THOMSON_DTT761X:
|
||||||
buffer[3] = 0x39;
|
buffer[3] = 0x39;
|
||||||
break;
|
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:
|
case TUNER_MICROTUNE_4049FM5:
|
||||||
default:
|
default:
|
||||||
buffer[3] = 0xa4;
|
buffer[3] = 0xa4;
|
||||||
|
@ -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[] = {
|
struct tunertype tuners[] = {
|
||||||
@ -1724,6 +1746,13 @@ struct tunertype tuners[] = {
|
|||||||
.params = tuner_fm1216mk5_params,
|
.params = tuner_fm1216mk5_params,
|
||||||
.count = ARRAY_SIZE(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);
|
EXPORT_SYMBOL(tuners);
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ hauppauge_tuner[] =
|
|||||||
{ TUNER_ABSENT, "Silicon TDA8275C1 8290 FM"},
|
{ TUNER_ABSENT, "Silicon TDA8275C1 8290 FM"},
|
||||||
{ TUNER_ABSENT, "Thompson DTT757"},
|
{ TUNER_ABSENT, "Thompson DTT757"},
|
||||||
/* 80-89 */
|
/* 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_PAL_NEW_TAPC, "LG TAPC G701D"},
|
||||||
{ TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"},
|
{ TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"},
|
||||||
{ TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"},
|
{ TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"},
|
||||||
@ -229,7 +229,7 @@ hauppauge_tuner[] =
|
|||||||
{ TUNER_ABSENT, "Samsung THPD5222FG30A"},
|
{ TUNER_ABSENT, "Samsung THPD5222FG30A"},
|
||||||
/* 120-129 */
|
/* 120-129 */
|
||||||
{ TUNER_XC2028, "Xceive XC3028"},
|
{ TUNER_XC2028, "Xceive XC3028"},
|
||||||
{ TUNER_ABSENT, "Philips FQ1216LME MK5"},
|
{ TUNER_PHILIPS_FQ1216LME_MK3, "Philips FQ1216LME MK5"},
|
||||||
{ TUNER_ABSENT, "Philips FQD1216LME"},
|
{ TUNER_ABSENT, "Philips FQD1216LME"},
|
||||||
{ TUNER_ABSENT, "Conexant CX24118A"},
|
{ TUNER_ABSENT, "Conexant CX24118A"},
|
||||||
{ TUNER_ABSENT, "TCL DMF11WIP"},
|
{ TUNER_ABSENT, "TCL DMF11WIP"},
|
||||||
|
@ -125,6 +125,7 @@
|
|||||||
#define TUNER_TCL_MF02GIP_5N 77 /* TCL MF02GIP_5N */
|
#define TUNER_TCL_MF02GIP_5N 77 /* TCL MF02GIP_5N */
|
||||||
#define TUNER_PHILIPS_FMD1216MEX_MK3 78
|
#define TUNER_PHILIPS_FMD1216MEX_MK3 78
|
||||||
#define TUNER_PHILIPS_FM1216MK5 79
|
#define TUNER_PHILIPS_FM1216MK5 79
|
||||||
|
#define TUNER_PHILIPS_FQ1216LME_MK3 80 /* Active loopthrough, no FM */
|
||||||
|
|
||||||
/* tv card specific */
|
/* tv card specific */
|
||||||
#define TDA9887_PRESENT (1<<0)
|
#define TDA9887_PRESENT (1<<0)
|
||||||
|
Loading…
Reference in New Issue
Block a user