int i2c_addr;
struct i2c_adapter *i2c_adap;
struct tda827x_config *cfg;
+
+ unsigned int sgIF;
+ unsigned char lpsel;
+
u32 frequency;
u32 bandwidth;
};
+static void tda827x_set_std(struct dvb_frontend *fe,
+ struct analog_parameters *params)
+{
+ struct tda827x_priv *priv = fe->tuner_priv;
+ char *mode;
+
+ priv->lpsel = 0;
+ if (params->std & V4L2_STD_MN) {
+ priv->sgIF = 92;
+ priv->lpsel = 1;
+ mode = "MN";
+ } else if (params->std & V4L2_STD_B) {
+ priv->sgIF = 108;
+ mode = "B";
+ } else if (params->std & V4L2_STD_GH) {
+ priv->sgIF = 124;
+ mode = "GH";
+ } else if (params->std & V4L2_STD_PAL_I) {
+ priv->sgIF = 124;
+ mode = "I";
+ } else if (params->std & V4L2_STD_DK) {
+ priv->sgIF = 124;
+ mode = "DK";
+ } else if (params->std & V4L2_STD_SECAM_L) {
+ priv->sgIF = 124;
+ mode = "L";
+ } else if (params->std & V4L2_STD_SECAM_LC) {
+ priv->sgIF = 20;
+ mode = "LC";
+ } else {
+ priv->sgIF = 124;
+ mode = "xx";
+ }
+
+ if (params->mode == V4L2_TUNER_RADIO)
+ priv->sgIF = 88; /* if frequency is 5.5 MHz */
+
+ dprintk("setting tda827x to system %s\n", mode);
+}
+
+
+/* ------------------------------------------------------------------ */
+
struct tda827x_data {
u32 lomax;
u8 spd;
struct i2c_msg msg = { .addr = priv->i2c_addr, .flags = 0 };
unsigned int freq = params->frequency;
+ tda827x_set_std(fe, params);
+
if (params->mode == V4L2_TUNER_RADIO)
freq = freq / 1000;
- N = freq + priv->cfg->sgIF;
+ N = freq + priv->sgIF;
i = 0;
while (tda827x_table[i].lomax < N * 62500) {
tuner_reg[1] = (unsigned char)(N>>8);
tuner_reg[2] = (unsigned char) N;
tuner_reg[3] = 0x40;
- tuner_reg[4] = 0x52 + (priv->cfg->tda827x_lpsel << 5);
+ tuner_reg[4] = 0x52 + (priv->lpsel << 5);
tuner_reg[5] = (tda827x_table[i].spd << 6) +
(tda827x_table[i].div1p5 << 5) +
(tda827x_table[i].bs << 3) + tda827x_table[i].bp;
.buf = tuner_reg, .len = sizeof(tuner_reg) };
unsigned int freq = params->frequency;
+ tda827x_set_std(fe, params);
+
tda827xa_lna_gain(fe, 1, params);
msleep(10);
if (params->mode == V4L2_TUNER_RADIO)
freq = freq / 1000;
- N = freq + priv->cfg->sgIF;
+ N = freq + priv->sgIF;
i = 0;
while (tda827xa_analog[i].lomax < N * 62500) {
tuner_reg[1] = 0xff;
tuner_reg[2] = 0xe0;
tuner_reg[3] = 0;
- tuner_reg[4] = 0x99 + (priv->cfg->tda827x_lpsel << 1);
+ tuner_reg[4] = 0x99 + (priv->lpsel << 1);
msg.len = 5;
i2c_transfer(priv->i2c_adap, &msg, 1);
i2c_transfer(priv->i2c_adap, &msg, 1);
tuner_reg[0] = 0xc0;
- tuner_reg[1] = 0x19 + (priv->cfg->tda827x_lpsel << 1);
+ tuner_reg[1] = 0x19 + (priv->lpsel << 1);
i2c_transfer(priv->i2c_adap, &msg, 1);
priv->frequency = freq * 62500;
struct tuner *t = priv->t;
char* mode;
- priv->cfg.tda827x_lpsel = 0;
if (t->std & V4L2_STD_MN) {
- priv->cfg.sgIF = 92;
priv->tda8290_easy_mode = 0x01;
- priv->cfg.tda827x_lpsel = 1;
mode = "MN";
} else if (t->std & V4L2_STD_B) {
- priv->cfg.sgIF = 108;
priv->tda8290_easy_mode = 0x02;
mode = "B";
} else if (t->std & V4L2_STD_GH) {
- priv->cfg.sgIF = 124;
priv->tda8290_easy_mode = 0x04;
mode = "GH";
} else if (t->std & V4L2_STD_PAL_I) {
- priv->cfg.sgIF = 124;
priv->tda8290_easy_mode = 0x08;
mode = "I";
} else if (t->std & V4L2_STD_DK) {
- priv->cfg.sgIF = 124;
priv->tda8290_easy_mode = 0x10;
mode = "DK";
} else if (t->std & V4L2_STD_SECAM_L) {
- priv->cfg.sgIF = 124;
priv->tda8290_easy_mode = 0x20;
mode = "L";
} else if (t->std & V4L2_STD_SECAM_LC) {
- priv->cfg.sgIF = 20;
priv->tda8290_easy_mode = 0x40;
mode = "LC";
} else {
- priv->cfg.sgIF = 124;
priv->tda8290_easy_mode = 0x10;
mode = "xx";
}
- if (t->mode == V4L2_TUNER_RADIO)
- priv->cfg.sgIF = 88; /* if frequency is 5.5 MHz */
-
tuner_dbg("setting tda8290 to system %s\n", mode);
}
{
struct tda8290_priv *priv = fe->analog_demod_priv;
struct tuner *t = priv->t;
- u16 ifc;
unsigned char blanking_mode[] = { 0x1d, 0x00 };
set_audio(fe);
- ifc = priv->cfg.sgIF; /* FIXME */
-
- tuner_dbg("%s: ifc = %u, freq = %d\n", __FUNCTION__, ifc, freq);
+ tuner_dbg("%s: freq = %d\n", __FUNCTION__, freq);
tda8295_power(fe, 1);
tda8295_agc1_out(fe, 1);
tuner_info("type set to %s\n", t->i2c.name);
- priv->cfg.tda827x_lpsel = 0;
t->mode = V4L2_TUNER_ANALOG_TV;
tda8290_init_tuner(&t->fe);
t->fe.ops.analog_demod_ops = &tda8295_tuner_ops;
- priv->cfg.tda827x_lpsel = 0;
t->mode = V4L2_TUNER_ANALOG_TV;
tda8295_init_if(&t->fe);