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