static void tda8290_standby(struct dvb_frontend *fe) { struct tda8290_priv *priv = fe->analog_demod_priv; unsigned char cb1[] = { 0x30, 0xD0 }; unsigned char tda8290_standby[] = { 0x00, 0x02 }; unsigned char tda8290_agc_tri[] = { 0x02, 0x20 }; struct i2c_msg msg = {.addr = priv->tda827x_addr, .flags=0, .buf=cb1, .len = 2}; if (fe->ops.analog_ops.i2c_gate_ctrl) fe->ops.analog_ops.i2c_gate_ctrl(fe, 1); if (priv->ver & TDA8275A) cb1[1] = 0x90; i2c_transfer(priv->i2c_props.adap, &msg, 1); if (fe->ops.analog_ops.i2c_gate_ctrl) fe->ops.analog_ops.i2c_gate_ctrl(fe, 0); tuner_i2c_xfer_send(&priv->i2c_props, tda8290_agc_tri, 2); tuner_i2c_xfer_send(&priv->i2c_props, tda8290_standby, 2); } static void tda8295_standby(struct dvb_frontend *fe) { tda8295_agc1_out(fe, 0); /* Put AGC in tri-state */ tda8295_power(fe, 0); }
static void tda8295_init_if(struct dvb_frontend *fe) { struct tda8290_priv *priv = fe->analog_demod_priv; static unsigned char set_adc_ctl[] = { 0x33, 0x14 }; static unsigned char set_adc_ctl2[] = { 0x34, 0x00 }; static unsigned char set_pll_reg6[] = { 0x3e, 0x63 }; static unsigned char set_pll_reg0[] = { 0x38, 0x23 }; static unsigned char set_pll_reg7[] = { 0x3f, 0x01 }; static unsigned char set_pll_reg10[] = { 0x42, 0x61 }; static unsigned char set_gpio_reg0[] = { 0x44, 0x0b }; tda8295_power(fe, 1); tda8295_set_easy_mode(fe, 0); tda8295_set_video_std(fe); tuner_i2c_xfer_send(&priv->i2c_props, set_adc_ctl, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_adc_ctl2, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_pll_reg6, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_pll_reg0, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_pll_reg7, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_pll_reg10, 2); tuner_i2c_xfer_send(&priv->i2c_props, set_gpio_reg0, 2); tda8295_agc1_out(fe, 0); tda8295_agc2_out(fe, 0); }
static void tda8295_set_params(struct dvb_frontend *fe, struct analog_parameters *params) { struct tda8290_priv *priv = fe->analog_demod_priv; u16 signal = 0; unsigned char blanking_mode[] = { 0x1d, 0x00 }; set_audio(fe, params); tuner_dbg("%s: freq = %d\n", __func__, params->frequency); tda8295_power(fe, 1); tda8295_agc1_out(fe, 1); tuner_i2c_xfer_send_recv(&priv->i2c_props, &blanking_mode[0], 1, &blanking_mode[1], 1); tda8295_set_video_std(fe); blanking_mode[1] = 0x03; tuner_i2c_xfer_send(&priv->i2c_props, blanking_mode, 2); msleep(20); if (fe->ops.analog_ops.i2c_gate_ctrl) fe->ops.analog_ops.i2c_gate_ctrl(fe, 1); if (fe->ops.tuner_ops.set_analog_params) fe->ops.tuner_ops.set_analog_params(fe, params); if (priv->cfg.agcf) priv->cfg.agcf(fe); tda8295_has_signal(fe, &signal); if (signal) tuner_dbg("tda8295 is locked\n"); else tuner_dbg("tda8295 not locked, no signal?\n"); if (fe->ops.analog_ops.i2c_gate_ctrl) fe->ops.analog_ops.i2c_gate_ctrl(fe, 0); }