Lines Matching refs:fe

2     tda18271-fe.c - driver for the Philips / NXP TDA18271 silicon tuner
40 static int tda18271_toggle_output(struct dvb_frontend *fe, int standby)
42 struct tda18271_priv *priv = fe->tuner_priv;
44 int ret = tda18271_set_standby_mode(fe, standby ? 1 : 0,
61 static inline int charge_pump_source(struct dvb_frontend *fe, int force)
63 struct tda18271_priv *priv = fe->tuner_priv;
64 return tda18271_charge_pump_source(fe,
70 static inline void tda18271_set_if_notch(struct dvb_frontend *fe)
72 struct tda18271_priv *priv = fe->tuner_priv;
85 static int tda18271_channel_configuration(struct dvb_frontend *fe,
89 struct tda18271_priv *priv = fe->tuner_priv;
119 ret = tda18271_write_regs(fe, R_EB22, 1);
133 tda18271_calc_ir_measure(fe, &freq);
135 tda18271_calc_bp_filter(fe, &freq);
137 tda18271_calc_rf_band(fe, &freq);
139 tda18271_calc_gain_taper(fe, &freq);
160 ret = tda18271_write_regs(fe, R_EB1, 1);
170 tda18271_calc_main_pll(fe, N);
171 tda18271_set_if_notch(fe);
172 tda18271_write_regs(fe, R_MPD, 4);
175 tda18271_calc_cal_pll(fe, N);
176 tda18271_write_regs(fe, R_CPD, 4);
179 tda18271_set_if_notch(fe);
180 tda18271_write_regs(fe, R_MPD, 1);
184 ret = tda18271_write_regs(fe, R_TM, 7);
189 charge_pump_source(fe, 1);
194 charge_pump_source(fe, 0);
204 ret = tda18271_write_regs(fe, R_EP3, 1);
210 static int tda18271_read_thermometer(struct dvb_frontend *fe)
212 struct tda18271_priv *priv = fe->tuner_priv;
218 tda18271_write_regs(fe, R_TM, 1);
221 tda18271_read_regs(fe);
231 tda18271_write_regs(fe, R_TM, 1);
236 tda18271_read_regs(fe);
239 tm = tda18271_lookup_thermometer(fe);
243 tda18271_write_regs(fe, R_TM, 1);
247 tda18271_write_regs(fe, R_EP4, 1);
254 static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,
257 struct tda18271_priv *priv = fe->tuner_priv;
265 ret = tda18271_set_standby_mode(fe, 0, 0, 0);
270 tm_current = tda18271_read_thermometer(fe);
274 tda18271_calc_rf_cal(fe, &freq);
277 i = tda18271_lookup_rf_band(fe, &freq, NULL);
294 tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);
300 ret = tda18271_write_regs(fe, R_EB14, 1);
305 static int tda18271_por(struct dvb_frontend *fe)
307 struct tda18271_priv *priv = fe->tuner_priv;
313 ret = tda18271_write_regs(fe, R_EB12, 1);
319 ret = tda18271_write_regs(fe, R_EB18, 1);
326 ret = tda18271_set_standby_mode(fe, 1, 0, 0);
333 ret = tda18271_write_regs(fe, R_EB21, 3);
338 static int tda18271_calibrate_rf(struct dvb_frontend *fe, u32 freq)
340 struct tda18271_priv *priv = fe->tuner_priv;
346 tda18271_write_regs(fe, R_EP4, 1);
352 tda18271_write_regs(fe, R_EB18, 1);
356 tda18271_calc_bp_filter(fe, &freq);
357 tda18271_calc_gain_taper(fe, &freq);
358 tda18271_calc_rf_band(fe, &freq);
359 tda18271_calc_km(fe, &freq);
361 tda18271_write_regs(fe, R_EP1, 3);
362 tda18271_write_regs(fe, R_EB13, 1);
365 tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 1);
368 tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 1);
372 tda18271_write_regs(fe, R_EB14, 1);
376 tda18271_write_regs(fe, R_EB20, 1);
380 tda18271_write_regs(fe, R_EP4, 2);
387 tda18271_calc_cal_pll(fe, N);
388 tda18271_write_regs(fe, R_CPD, 4);
393 tda18271_calc_main_pll(fe, N);
394 tda18271_write_regs(fe, R_MPD, 4);
398 tda18271_write_regs(fe, R_EP2, 1);
399 tda18271_write_regs(fe, R_EP1, 1);
400 tda18271_write_regs(fe, R_EP2, 1);
401 tda18271_write_regs(fe, R_EP1, 1);
406 tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 0);
409 tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 0);
415 tda18271_write_regs(fe, R_EB20, 1);
428 tda18271_write_regs(fe, R_EB18, 1);
430 tda18271_write_regs(fe, R_EP3, 2);
433 tda18271_write_regs(fe, R_EP1, 1);
436 tda18271_read_extended(fe);
441 static int tda18271_powerscan(struct dvb_frontend *fe,
444 struct tda18271_priv *priv = fe->tuner_priv;
453 tda18271_calc_rf_band(fe, &freq);
454 tda18271_calc_rf_cal(fe, &freq);
455 tda18271_calc_gain_taper(fe, &freq);
456 tda18271_lookup_cid_target(fe, &freq, &cid_target, &count_limit);
458 tda18271_write_regs(fe, R_EP2, 1);
459 tda18271_write_regs(fe, R_EB14, 1);
464 tda18271_calc_main_pll(fe, freq);
465 tda18271_write_regs(fe, R_MPD, 4);
472 tda18271_write_regs(fe, R_EP4, 1);
475 tda18271_write_regs(fe, R_EP2, 1);
478 ret = tda18271_read_extended(fe);
493 tda18271_calc_main_pll(fe, freq);
494 tda18271_write_regs(fe, R_MPD, 4);
503 tda18271_write_regs(fe, R_EP2, 1);
506 ret = tda18271_read_extended(fe);
535 static int tda18271_powerscan_init(struct dvb_frontend *fe)
537 struct tda18271_priv *priv = fe->tuner_priv;
551 ret = tda18271_write_regs(fe, R_EP3, 2);
556 ret = tda18271_write_regs(fe, R_EB18, 1);
566 ret = tda18271_write_regs(fe, R_EB21, 3);
571 static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq)
573 struct tda18271_priv *priv = fe->tuner_priv;
586 i = tda18271_lookup_rf_band(fe, &freq, NULL);
601 bcal = tda18271_powerscan(fe, &rf_default[rf], &rf_freq[rf]);
605 tda18271_calc_rf_cal(fe, &rf_freq[rf]);
610 (s32)tda18271_calibrate_rf(fe, rf_freq[rf]);
643 static int tda18271_calc_rf_filter_curve(struct dvb_frontend *fe)
645 struct tda18271_priv *priv = fe->tuner_priv;
654 ret = tda18271_powerscan_init(fe);
661 tda18271_rf_tracking_filters_init(fe, 1000 *
667 priv->tm_rfcal = tda18271_read_thermometer(fe);
674 static int tda18271c2_rf_cal_init(struct dvb_frontend *fe)
676 struct tda18271_priv *priv = fe->tuner_priv;
687 ret = tda18271_calc_rf_filter_curve(fe);
691 ret = tda18271_por(fe);
705 static int tda18271c1_rf_tracking_filter_calibration(struct dvb_frontend *fe,
708 struct tda18271_priv *priv = fe->tuner_priv;
714 tda18271_calc_bp_filter(fe, &freq);
715 tda18271_write_regs(fe, R_EP1, 1);
719 tda18271_write_regs(fe, R_EB4, 1);
722 tda18271_write_regs(fe, R_EB7, 1);
725 tda18271_write_regs(fe, R_EB14, 1);
728 tda18271_write_regs(fe, R_EB20, 1);
744 tda18271_calc_cal_pll(fe, N);
757 tda18271_calc_main_pll(fe, N);
759 ret = tda18271_write_regs(fe, R_EP3, 11);
766 tda18271_calc_km(fe, &freq);
767 tda18271_write_regs(fe, R_EB13, 1);
770 tda18271_calc_rf_band(fe, &freq);
773 tda18271_calc_gain_taper(fe, &freq);
775 tda18271_write_regs(fe, R_EP2, 1);
776 tda18271_write_regs(fe, R_EP1, 1);
777 tda18271_write_regs(fe, R_EP2, 1);
778 tda18271_write_regs(fe, R_EP1, 1);
782 tda18271_write_regs(fe, R_EB4, 1);
785 tda18271_write_regs(fe, R_EB7, 1);
789 tda18271_write_regs(fe, R_EB20, 1);
793 tda18271_write_regs(fe, R_EP4, 1);
795 tda18271_write_regs(fe, R_EP1, 1);
798 if (0 == tda18271_calc_rf_cal(fe, &freq))
799 tda18271_write_regs(fe, R_EB14, 1);
806 static int tda18271_ir_cal_init(struct dvb_frontend *fe)
808 struct tda18271_priv *priv = fe->tuner_priv;
812 ret = tda18271_read_regs(fe);
818 ret = tda18271_init_regs(fe);
823 static int tda18271_init(struct dvb_frontend *fe)
825 struct tda18271_priv *priv = fe->tuner_priv;
831 ret = tda18271_set_standby_mode(fe, 0, 0, 0);
836 ret = tda18271_ir_cal_init(fe);
841 tda18271c2_rf_cal_init(fe);
848 static int tda18271_sleep(struct dvb_frontend *fe)
850 struct tda18271_priv *priv = fe->tuner_priv;
856 ret = tda18271_toggle_output(fe, 1);
865 static int tda18271_agc(struct dvb_frontend *fe)
867 struct tda18271_priv *priv = fe->tuner_priv;
879 if (fe->callback)
880 ret = fe->callback(priv->i2c_props.adap->algo_data,
896 static int tda18271_tune(struct dvb_frontend *fe,
899 struct tda18271_priv *priv = fe->tuner_priv;
905 ret = tda18271_agc(fe);
909 ret = tda18271_init(fe);
917 tda18271c1_rf_tracking_filter_calibration(fe, freq, bw);
920 tda18271c2_rf_tracking_filters_correction(fe, freq);
923 ret = tda18271_channel_configuration(fe, map, freq, bw);
932 static int tda18271_set_params(struct dvb_frontend *fe)
934 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
938 struct tda18271_priv *priv = fe->tuner_priv;
980 if (fe->ops.analog_ops.standby)
981 fe->ops.analog_ops.standby(fe);
983 ret = tda18271_tune(fe, map, freq, bw);
995 static int tda18271_set_analog_params(struct dvb_frontend *fe,
998 struct tda18271_priv *priv = fe->tuner_priv;
1039 ret = tda18271_tune(fe, map, freq, 0);
1051 static int tda18271_release(struct dvb_frontend *fe)
1053 struct tda18271_priv *priv = fe->tuner_priv;
1062 fe->tuner_priv = NULL;
1067 static int tda18271_get_frequency(struct dvb_frontend *fe, u32 *frequency)
1069 struct tda18271_priv *priv = fe->tuner_priv;
1074 static int tda18271_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
1076 struct tda18271_priv *priv = fe->tuner_priv;
1081 static int tda18271_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
1083 struct tda18271_priv *priv = fe->tuner_priv;
1107 static int tda18271_dump_std_map(struct dvb_frontend *fe)
1109 struct tda18271_priv *priv = fe->tuner_priv;
1132 static int tda18271_update_std_map(struct dvb_frontend *fe,
1135 struct tda18271_priv *priv = fe->tuner_priv;
1160 static int tda18271_get_id(struct dvb_frontend *fe)
1162 struct tda18271_priv *priv = fe->tuner_priv;
1168 ret = tda18271_read_regs(fe);
1200 static int tda18271_setup_configuration(struct dvb_frontend *fe,
1203 struct tda18271_priv *priv = fe->tuner_priv;
1226 static int tda18271_set_config(struct dvb_frontend *fe, void *priv_cfg)
1230 tda18271_setup_configuration(fe, cfg);
1233 tda18271_init(fe);
1237 tda18271_update_std_map(fe, cfg->std_map);
1260 struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
1277 fe->tuner_priv = priv;
1279 tda18271_setup_configuration(fe, cfg);
1284 ret = tda18271_get_id(fe);
1288 ret = tda18271_assign_map_layout(fe);
1298 tda18271_init_regs(fe);
1302 tda18271c2_rf_cal_init(fe);
1305 ret = tda18271_toggle_output(fe, 1);
1312 fe->tuner_priv = priv;
1327 tda18271_update_std_map(fe, cfg->std_map);
1330 tda18271_init(fe);
1336 tda18271_update_std_map(fe, cfg->std_map);
1340 memcpy(&fe->ops.tuner_ops, &tda18271_tuner_ops,
1344 tda18271_dump_std_map(fe);
1346 return fe;
1350 tda18271_release(fe);