Lines Matching refs:fe

3     tda18271-fe.c - driver for the Philips / NXP TDA18271 silicon tuner
28 static int tda18271_toggle_output(struct dvb_frontend *fe, int standby)
30 struct tda18271_priv *priv = fe->tuner_priv;
32 int ret = tda18271_set_standby_mode(fe, standby ? 1 : 0,
49 static inline int charge_pump_source(struct dvb_frontend *fe, int force)
51 struct tda18271_priv *priv = fe->tuner_priv;
52 return tda18271_charge_pump_source(fe,
58 static inline void tda18271_set_if_notch(struct dvb_frontend *fe)
60 struct tda18271_priv *priv = fe->tuner_priv;
73 static int tda18271_channel_configuration(struct dvb_frontend *fe,
77 struct tda18271_priv *priv = fe->tuner_priv;
107 ret = tda18271_write_regs(fe, R_EB22, 1);
121 tda18271_calc_ir_measure(fe, &freq);
123 tda18271_calc_bp_filter(fe, &freq);
125 tda18271_calc_rf_band(fe, &freq);
127 tda18271_calc_gain_taper(fe, &freq);
148 ret = tda18271_write_regs(fe, R_EB1, 1);
158 tda18271_calc_main_pll(fe, N);
159 tda18271_set_if_notch(fe);
160 tda18271_write_regs(fe, R_MPD, 4);
163 tda18271_calc_cal_pll(fe, N);
164 tda18271_write_regs(fe, R_CPD, 4);
167 tda18271_set_if_notch(fe);
168 tda18271_write_regs(fe, R_MPD, 1);
172 ret = tda18271_write_regs(fe, R_TM, 7);
177 charge_pump_source(fe, 1);
182 charge_pump_source(fe, 0);
192 ret = tda18271_write_regs(fe, R_EP3, 1);
198 static int tda18271_read_thermometer(struct dvb_frontend *fe)
200 struct tda18271_priv *priv = fe->tuner_priv;
206 tda18271_write_regs(fe, R_TM, 1);
209 tda18271_read_regs(fe);
219 tda18271_write_regs(fe, R_TM, 1);
224 tda18271_read_regs(fe);
227 tm = tda18271_lookup_thermometer(fe);
231 tda18271_write_regs(fe, R_TM, 1);
235 tda18271_write_regs(fe, R_EP4, 1);
242 static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,
245 struct tda18271_priv *priv = fe->tuner_priv;
253 ret = tda18271_set_standby_mode(fe, 0, 0, 0);
258 tm_current = tda18271_read_thermometer(fe);
262 tda18271_calc_rf_cal(fe, &freq);
265 i = tda18271_lookup_rf_band(fe, &freq, NULL);
282 tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);
288 ret = tda18271_write_regs(fe, R_EB14, 1);
293 static int tda18271_por(struct dvb_frontend *fe)
295 struct tda18271_priv *priv = fe->tuner_priv;
301 ret = tda18271_write_regs(fe, R_EB12, 1);
307 ret = tda18271_write_regs(fe, R_EB18, 1);
314 ret = tda18271_set_standby_mode(fe, 1, 0, 0);
321 ret = tda18271_write_regs(fe, R_EB21, 3);
326 static int tda18271_calibrate_rf(struct dvb_frontend *fe, u32 freq)
328 struct tda18271_priv *priv = fe->tuner_priv;
334 tda18271_write_regs(fe, R_EP4, 1);
340 tda18271_write_regs(fe, R_EB18, 1);
344 tda18271_calc_bp_filter(fe, &freq);
345 tda18271_calc_gain_taper(fe, &freq);
346 tda18271_calc_rf_band(fe, &freq);
347 tda18271_calc_km(fe, &freq);
349 tda18271_write_regs(fe, R_EP1, 3);
350 tda18271_write_regs(fe, R_EB13, 1);
353 tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 1);
356 tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 1);
360 tda18271_write_regs(fe, R_EB14, 1);
364 tda18271_write_regs(fe, R_EB20, 1);
368 tda18271_write_regs(fe, R_EP4, 2);
375 tda18271_calc_cal_pll(fe, N);
376 tda18271_write_regs(fe, R_CPD, 4);
381 tda18271_calc_main_pll(fe, N);
382 tda18271_write_regs(fe, R_MPD, 4);
386 tda18271_write_regs(fe, R_EP2, 1);
387 tda18271_write_regs(fe, R_EP1, 1);
388 tda18271_write_regs(fe, R_EP2, 1);
389 tda18271_write_regs(fe, R_EP1, 1);
394 tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 0);
397 tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 0);
403 tda18271_write_regs(fe, R_EB20, 1);
416 tda18271_write_regs(fe, R_EB18, 1);
418 tda18271_write_regs(fe, R_EP3, 2);
421 tda18271_write_regs(fe, R_EP1, 1);
424 tda18271_read_extended(fe);
429 static int tda18271_powerscan(struct dvb_frontend *fe,
432 struct tda18271_priv *priv = fe->tuner_priv;
441 tda18271_calc_rf_band(fe, &freq);
442 tda18271_calc_rf_cal(fe, &freq);
443 tda18271_calc_gain_taper(fe, &freq);
444 tda18271_lookup_cid_target(fe, &freq, &cid_target, &count_limit);
446 tda18271_write_regs(fe, R_EP2, 1);
447 tda18271_write_regs(fe, R_EB14, 1);
452 tda18271_calc_main_pll(fe, freq);
453 tda18271_write_regs(fe, R_MPD, 4);
460 tda18271_write_regs(fe, R_EP4, 1);
463 tda18271_write_regs(fe, R_EP2, 1);
466 ret = tda18271_read_extended(fe);
481 tda18271_calc_main_pll(fe, freq);
482 tda18271_write_regs(fe, R_MPD, 4);
491 tda18271_write_regs(fe, R_EP2, 1);
494 ret = tda18271_read_extended(fe);
523 static int tda18271_powerscan_init(struct dvb_frontend *fe)
525 struct tda18271_priv *priv = fe->tuner_priv;
539 ret = tda18271_write_regs(fe, R_EP3, 2);
544 ret = tda18271_write_regs(fe, R_EB18, 1);
554 ret = tda18271_write_regs(fe, R_EB21, 3);
559 static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq)
561 struct tda18271_priv *priv = fe->tuner_priv;
574 i = tda18271_lookup_rf_band(fe, &freq, NULL);
589 bcal = tda18271_powerscan(fe, &rf_default[rf], &rf_freq[rf]);
593 tda18271_calc_rf_cal(fe, &rf_freq[rf]);
598 (s32)tda18271_calibrate_rf(fe, rf_freq[rf]);
631 static int tda18271_calc_rf_filter_curve(struct dvb_frontend *fe)
633 struct tda18271_priv *priv = fe->tuner_priv;
642 ret = tda18271_powerscan_init(fe);
649 tda18271_rf_tracking_filters_init(fe, 1000 *
655 priv->tm_rfcal = tda18271_read_thermometer(fe);
662 static int tda18271c2_rf_cal_init(struct dvb_frontend *fe)
664 struct tda18271_priv *priv = fe->tuner_priv;
675 ret = tda18271_calc_rf_filter_curve(fe);
679 ret = tda18271_por(fe);
693 static int tda18271c1_rf_tracking_filter_calibration(struct dvb_frontend *fe,
696 struct tda18271_priv *priv = fe->tuner_priv;
702 tda18271_calc_bp_filter(fe, &freq);
703 tda18271_write_regs(fe, R_EP1, 1);
707 tda18271_write_regs(fe, R_EB4, 1);
710 tda18271_write_regs(fe, R_EB7, 1);
713 tda18271_write_regs(fe, R_EB14, 1);
716 tda18271_write_regs(fe, R_EB20, 1);
732 tda18271_calc_cal_pll(fe, N);
745 tda18271_calc_main_pll(fe, N);
747 ret = tda18271_write_regs(fe, R_EP3, 11);
754 tda18271_calc_km(fe, &freq);
755 tda18271_write_regs(fe, R_EB13, 1);
758 tda18271_calc_rf_band(fe, &freq);
761 tda18271_calc_gain_taper(fe, &freq);
763 tda18271_write_regs(fe, R_EP2, 1);
764 tda18271_write_regs(fe, R_EP1, 1);
765 tda18271_write_regs(fe, R_EP2, 1);
766 tda18271_write_regs(fe, R_EP1, 1);
770 tda18271_write_regs(fe, R_EB4, 1);
773 tda18271_write_regs(fe, R_EB7, 1);
777 tda18271_write_regs(fe, R_EB20, 1);
781 tda18271_write_regs(fe, R_EP4, 1);
783 tda18271_write_regs(fe, R_EP1, 1);
786 if (0 == tda18271_calc_rf_cal(fe, &freq))
787 tda18271_write_regs(fe, R_EB14, 1);
794 static int tda18271_ir_cal_init(struct dvb_frontend *fe)
796 struct tda18271_priv *priv = fe->tuner_priv;
800 ret = tda18271_read_regs(fe);
806 ret = tda18271_init_regs(fe);
811 static int tda18271_init(struct dvb_frontend *fe)
813 struct tda18271_priv *priv = fe->tuner_priv;
819 ret = tda18271_set_standby_mode(fe, 0, 0, 0);
824 ret = tda18271_ir_cal_init(fe);
829 tda18271c2_rf_cal_init(fe);
836 static int tda18271_sleep(struct dvb_frontend *fe)
838 struct tda18271_priv *priv = fe->tuner_priv;
844 ret = tda18271_toggle_output(fe, 1);
853 static int tda18271_agc(struct dvb_frontend *fe)
855 struct tda18271_priv *priv = fe->tuner_priv;
867 if (fe->callback)
868 ret = fe->callback(priv->i2c_props.adap->algo_data,
884 static int tda18271_tune(struct dvb_frontend *fe,
887 struct tda18271_priv *priv = fe->tuner_priv;
893 ret = tda18271_agc(fe);
897 ret = tda18271_init(fe);
905 tda18271c1_rf_tracking_filter_calibration(fe, freq, bw);
908 tda18271c2_rf_tracking_filters_correction(fe, freq);
911 ret = tda18271_channel_configuration(fe, map, freq, bw);
920 static int tda18271_set_params(struct dvb_frontend *fe)
922 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
926 struct tda18271_priv *priv = fe->tuner_priv;
968 if (fe->ops.analog_ops.standby)
969 fe->ops.analog_ops.standby(fe);
971 ret = tda18271_tune(fe, map, freq, bw);
983 static int tda18271_set_analog_params(struct dvb_frontend *fe,
986 struct tda18271_priv *priv = fe->tuner_priv;
1027 ret = tda18271_tune(fe, map, freq, 0);
1039 static void tda18271_release(struct dvb_frontend *fe)
1041 struct tda18271_priv *priv = fe->tuner_priv;
1050 fe->tuner_priv = NULL;
1053 static int tda18271_get_frequency(struct dvb_frontend *fe, u32 *frequency)
1055 struct tda18271_priv *priv = fe->tuner_priv;
1060 static int tda18271_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
1062 struct tda18271_priv *priv = fe->tuner_priv;
1067 static int tda18271_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
1069 struct tda18271_priv *priv = fe->tuner_priv;
1093 static int tda18271_dump_std_map(struct dvb_frontend *fe)
1095 struct tda18271_priv *priv = fe->tuner_priv;
1118 static int tda18271_update_std_map(struct dvb_frontend *fe,
1121 struct tda18271_priv *priv = fe->tuner_priv;
1146 static int tda18271_get_id(struct dvb_frontend *fe)
1148 struct tda18271_priv *priv = fe->tuner_priv;
1154 ret = tda18271_read_regs(fe);
1186 static int tda18271_setup_configuration(struct dvb_frontend *fe,
1189 struct tda18271_priv *priv = fe->tuner_priv;
1212 static int tda18271_set_config(struct dvb_frontend *fe, void *priv_cfg)
1216 tda18271_setup_configuration(fe, cfg);
1219 tda18271_init(fe);
1223 tda18271_update_std_map(fe, cfg->std_map);
1246 struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
1263 fe->tuner_priv = priv;
1265 tda18271_setup_configuration(fe, cfg);
1270 ret = tda18271_get_id(fe);
1274 ret = tda18271_assign_map_layout(fe);
1284 tda18271_init_regs(fe);
1288 tda18271c2_rf_cal_init(fe);
1291 ret = tda18271_toggle_output(fe, 1);
1298 fe->tuner_priv = priv;
1313 tda18271_update_std_map(fe, cfg->std_map);
1316 tda18271_init(fe);
1322 tda18271_update_std_map(fe, cfg->std_map);
1326 memcpy(&fe->ops.tuner_ops, &tda18271_tuner_ops,
1330 tda18271_dump_std_map(fe);
1332 return fe;
1336 tda18271_release(fe);