Lines Matching refs:priv

255 static int xc5000_readreg(struct xc5000_priv *priv, u16 reg, u16 *val);
258 static int xc_send_i2c_data(struct xc5000_priv *priv, u8 *buf, int len) in xc_send_i2c_data() argument
260 struct i2c_msg msg = { .addr = priv->i2c_props.addr, in xc_send_i2c_data()
263 if (i2c_transfer(priv->i2c_props.adap, &msg, 1) != 1) { in xc_send_i2c_data()
274 static int xc_read_i2c_data(struct xc5000_priv *priv, u8 *buf, int len)
276 struct i2c_msg msg = { .addr = priv->i2c_props.addr,
279 if (i2c_transfer(priv->i2c_props.adap, &msg, 1) != 1) {
287 static int xc5000_readreg(struct xc5000_priv *priv, u16 reg, u16 *val) in xc5000_readreg() argument
292 { .addr = priv->i2c_props.addr, in xc5000_readreg()
294 { .addr = priv->i2c_props.addr, in xc5000_readreg()
298 if (i2c_transfer(priv->i2c_props.adap, msg, 2) != 2) { in xc5000_readreg()
309 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_tuner_reset() local
315 ret = fe->callback(((fe->dvb) && (fe->dvb->priv)) ? in xc5000_tuner_reset()
316 fe->dvb->priv : in xc5000_tuner_reset()
317 priv->i2c_props.adap->algo_data, in xc5000_tuner_reset()
331 static int xc_write_reg(struct xc5000_priv *priv, u16 reg_addr, u16 i2c_data) in xc_write_reg() argument
341 result = xc_send_i2c_data(priv, buf, 4); in xc_write_reg()
345 result = xc5000_readreg(priv, XREG_BUSY, (u16 *)buf); in xc_write_reg()
365 struct xc5000_priv *priv = fe->tuner_priv; in xc_load_i2c_sequence() local
403 result = xc_send_i2c_data(priv, buf, in xc_load_i2c_sequence()
417 static int xc_initialize(struct xc5000_priv *priv) in xc_initialize() argument
420 return xc_write_reg(priv, XREG_INIT, 0); in xc_initialize()
423 static int xc_set_tv_standard(struct xc5000_priv *priv, in xc_set_tv_standard() argument
435 xc5000_standard[priv->video_standard].name); in xc_set_tv_standard()
438 ret = xc_write_reg(priv, XREG_VIDEO_MODE, video_mode); in xc_set_tv_standard()
440 ret = xc_write_reg(priv, XREG_AUDIO_MODE, audio_mode); in xc_set_tv_standard()
445 static int xc_set_signal_source(struct xc5000_priv *priv, u16 rf_mode) in xc_set_signal_source() argument
456 return xc_write_reg(priv, XREG_SIGNALSOURCE, rf_mode); in xc_set_signal_source()
461 static int xc_set_rf_frequency(struct xc5000_priv *priv, u32 freq_hz) in xc_set_rf_frequency() argument
476 return xc_write_reg(priv, XREG_FINERFREQ, freq_code); in xc_set_rf_frequency()
480 static int xc_set_IF_frequency(struct xc5000_priv *priv, u32 freq_khz) in xc_set_IF_frequency() argument
486 return xc_write_reg(priv, XREG_IF_OUT, freq_code); in xc_set_IF_frequency()
490 static int xc_get_adc_envelope(struct xc5000_priv *priv, u16 *adc_envelope) in xc_get_adc_envelope() argument
492 return xc5000_readreg(priv, XREG_ADC_ENV, adc_envelope); in xc_get_adc_envelope()
495 static int xc_get_frequency_error(struct xc5000_priv *priv, u32 *freq_error_hz) in xc_get_frequency_error() argument
501 result = xc5000_readreg(priv, XREG_FREQ_ERROR, &reg_data); in xc_get_frequency_error()
510 static int xc_get_lock_status(struct xc5000_priv *priv, u16 *lock_status) in xc_get_lock_status() argument
512 return xc5000_readreg(priv, XREG_LOCK, lock_status); in xc_get_lock_status()
515 static int xc_get_version(struct xc5000_priv *priv, in xc_get_version() argument
522 result = xc5000_readreg(priv, XREG_VERSION, &data); in xc_get_version()
534 static int xc_get_buildversion(struct xc5000_priv *priv, u16 *buildrev) in xc_get_buildversion() argument
536 return xc5000_readreg(priv, XREG_BUILD, buildrev); in xc_get_buildversion()
539 static int xc_get_hsync_freq(struct xc5000_priv *priv, u32 *hsync_freq_hz) in xc_get_hsync_freq() argument
544 result = xc5000_readreg(priv, XREG_HSYNC_FREQ, &reg_data); in xc_get_hsync_freq()
552 static int xc_get_frame_lines(struct xc5000_priv *priv, u16 *frame_lines) in xc_get_frame_lines() argument
554 return xc5000_readreg(priv, XREG_FRAME_LINES, frame_lines); in xc_get_frame_lines()
557 static int xc_get_quality(struct xc5000_priv *priv, u16 *quality) in xc_get_quality() argument
559 return xc5000_readreg(priv, XREG_QUALITY, quality); in xc_get_quality()
562 static int xc_get_analogsnr(struct xc5000_priv *priv, u16 *snr) in xc_get_analogsnr() argument
564 return xc5000_readreg(priv, XREG_SNR, snr); in xc_get_analogsnr()
567 static int xc_get_totalgain(struct xc5000_priv *priv, u16 *totalgain) in xc_get_totalgain() argument
569 return xc5000_readreg(priv, XREG_TOTALGAIN, totalgain); in xc_get_totalgain()
572 static u16 wait_for_lock(struct xc5000_priv *priv) in wait_for_lock() argument
578 xc_get_lock_status(priv, &lock_state); in wait_for_lock()
589 static int xc_tune_channel(struct xc5000_priv *priv, u32 freq_hz, int mode) in xc_tune_channel() argument
595 if (xc_set_rf_frequency(priv, freq_hz) != 0) in xc_tune_channel()
599 if (wait_for_lock(priv) == 1) in xc_tune_channel()
608 struct xc5000_priv *priv = fe->tuner_priv; in xc_set_xtal() local
611 switch (priv->chip_id) { in xc_set_xtal()
617 switch (priv->xtal_khz) { in xc_set_xtal()
624 ret = xc_write_reg(priv, 0x000f, 0x8081); in xc_set_xtal()
636 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_fwupload() local
643 priv->pll_register_no = desired_fw->pll_reg; in xc5000_fwupload()
644 priv->init_status_supported = desired_fw->init_status_supported; in xc5000_fwupload()
645 priv->fw_checksum_supported = desired_fw->fw_checksum_supported; in xc5000_fwupload()
659 static void xc_debug_dump(struct xc5000_priv *priv) in xc_debug_dump() argument
680 xc_get_adc_envelope(priv, &adc_envelope); in xc_debug_dump()
683 xc_get_frequency_error(priv, &freq_error_hz); in xc_debug_dump()
686 xc_get_lock_status(priv, &lock_status); in xc_debug_dump()
690 xc_get_version(priv, &hw_majorversion, &hw_minorversion, in xc_debug_dump()
692 xc_get_buildversion(priv, &fw_buildversion); in xc_debug_dump()
697 xc_get_hsync_freq(priv, &hsync_freq_hz); in xc_debug_dump()
700 xc_get_frame_lines(priv, &frame_lines); in xc_debug_dump()
703 xc_get_quality(priv, &quality); in xc_debug_dump()
706 xc_get_analogsnr(priv, &snr); in xc_debug_dump()
709 xc_get_totalgain(priv, &totalgain); in xc_debug_dump()
713 if (priv->pll_register_no) { in xc_debug_dump()
714 xc5000_readreg(priv, priv->pll_register_no, &regval); in xc_debug_dump()
721 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_tune_digital() local
725 ret = xc_set_signal_source(priv, priv->rf_mode); in xc5000_tune_digital()
729 priv->rf_mode); in xc5000_tune_digital()
733 ret = xc_set_tv_standard(priv, in xc5000_tune_digital()
734 xc5000_standard[priv->video_standard].video_mode, in xc5000_tune_digital()
735 xc5000_standard[priv->video_standard].audio_mode, 0); in xc5000_tune_digital()
741 ret = xc_set_IF_frequency(priv, priv->if_khz); in xc5000_tune_digital()
744 priv->if_khz); in xc5000_tune_digital()
749 __func__, priv->output_amp); in xc5000_tune_digital()
750 xc_write_reg(priv, XREG_OUTPUT_AMP, priv->output_amp); in xc5000_tune_digital()
752 xc_tune_channel(priv, priv->freq_hz, XC_TUNE_DIGITAL); in xc5000_tune_digital()
755 xc_debug_dump(priv); in xc5000_tune_digital()
757 priv->bandwidth = bw; in xc5000_tune_digital()
765 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_digital_params() local
780 priv->rf_mode = XC_RF_MODE_AIR; in xc5000_set_digital_params()
781 priv->freq_offset = 1750000; in xc5000_set_digital_params()
782 priv->video_standard = DTV6; in xc5000_set_digital_params()
786 priv->rf_mode = XC_RF_MODE_CABLE; in xc5000_set_digital_params()
787 priv->freq_offset = 1750000; in xc5000_set_digital_params()
788 priv->video_standard = DTV6; in xc5000_set_digital_params()
801 priv->video_standard = DTV6; in xc5000_set_digital_params()
802 priv->freq_offset = 1750000; in xc5000_set_digital_params()
805 priv->video_standard = DTV7; in xc5000_set_digital_params()
806 priv->freq_offset = 2250000; in xc5000_set_digital_params()
809 priv->video_standard = DTV8; in xc5000_set_digital_params()
810 priv->freq_offset = 2750000; in xc5000_set_digital_params()
816 priv->rf_mode = XC_RF_MODE_AIR; in xc5000_set_digital_params()
821 priv->rf_mode = XC_RF_MODE_CABLE; in xc5000_set_digital_params()
823 priv->video_standard = DTV6; in xc5000_set_digital_params()
824 priv->freq_offset = 1750000; in xc5000_set_digital_params()
827 priv->video_standard = DTV7; in xc5000_set_digital_params()
828 priv->freq_offset = 2250000; in xc5000_set_digital_params()
831 priv->video_standard = DTV7_8; in xc5000_set_digital_params()
832 priv->freq_offset = 2750000; in xc5000_set_digital_params()
843 priv->freq_hz = freq - priv->freq_offset; in xc5000_set_digital_params()
844 priv->mode = V4L2_TUNER_DIGITAL_TV; in xc5000_set_digital_params()
847 __func__, freq, priv->freq_hz); in xc5000_set_digital_params()
854 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_is_firmware_loaded() local
858 ret = xc5000_readreg(priv, XREG_PRODUCT_ID, &id); in xc5000_is_firmware_loaded()
874 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_config_tv() local
880 priv->rf_mode = params->mode; in xc5000_config_tv()
882 priv->rf_mode = XC_RF_MODE_CABLE; in xc5000_config_tv()
885 priv->freq_hz = params->frequency * 62500; in xc5000_config_tv()
892 priv->video_standard = MN_NTSC_PAL_BTSC; in xc5000_config_tv()
898 priv->video_standard = BG_PAL_NICAM; in xc5000_config_tv()
904 priv->video_standard = I_PAL_NICAM; in xc5000_config_tv()
910 priv->video_standard = DK_PAL_NICAM; in xc5000_config_tv()
916 priv->video_standard = DK_SECAM_A2DK1; in xc5000_config_tv()
921 priv->video_standard = L_SECAM_NICAM; in xc5000_config_tv()
926 priv->video_standard = LC_SECAM_NICAM; in xc5000_config_tv()
933 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_tv_freq() local
938 ret = xc_set_signal_source(priv, priv->rf_mode); in xc5000_set_tv_freq()
942 priv->rf_mode); in xc5000_set_tv_freq()
946 ret = xc_set_tv_standard(priv, in xc5000_set_tv_freq()
947 xc5000_standard[priv->video_standard].video_mode, in xc5000_set_tv_freq()
948 xc5000_standard[priv->video_standard].audio_mode, 0); in xc5000_set_tv_freq()
954 xc_write_reg(priv, XREG_OUTPUT_AMP, 0x09); in xc5000_set_tv_freq()
956 xc_tune_channel(priv, priv->freq_hz, XC_TUNE_ANALOG); in xc5000_set_tv_freq()
959 xc_debug_dump(priv); in xc5000_set_tv_freq()
961 if (priv->pll_register_no != 0) { in xc5000_set_tv_freq()
963 xc5000_readreg(priv, priv->pll_register_no, &pll_lock_status); in xc5000_set_tv_freq()
983 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_config_radio() local
988 if (priv->radio_input == XC5000_RADIO_NOT_CONFIGURED) { in xc5000_config_radio()
993 priv->freq_hz = params->frequency * 125 / 2; in xc5000_config_radio()
994 priv->rf_mode = XC_RF_MODE_AIR; in xc5000_config_radio()
1001 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_radio_freq() local
1005 if (priv->radio_input == XC5000_RADIO_FM1) in xc5000_set_radio_freq()
1007 else if (priv->radio_input == XC5000_RADIO_FM2) in xc5000_set_radio_freq()
1009 else if (priv->radio_input == XC5000_RADIO_FM1_MONO) in xc5000_set_radio_freq()
1013 priv->radio_input); in xc5000_set_radio_freq()
1017 ret = xc_set_tv_standard(priv, xc5000_standard[radio_input].video_mode, in xc5000_set_radio_freq()
1025 ret = xc_set_signal_source(priv, priv->rf_mode); in xc5000_set_radio_freq()
1029 priv->rf_mode); in xc5000_set_radio_freq()
1033 if ((priv->radio_input == XC5000_RADIO_FM1) || in xc5000_set_radio_freq()
1034 (priv->radio_input == XC5000_RADIO_FM2)) in xc5000_set_radio_freq()
1035 xc_write_reg(priv, XREG_OUTPUT_AMP, 0x09); in xc5000_set_radio_freq()
1036 else if (priv->radio_input == XC5000_RADIO_FM1_MONO) in xc5000_set_radio_freq()
1037 xc_write_reg(priv, XREG_OUTPUT_AMP, 0x06); in xc5000_set_radio_freq()
1039 xc_tune_channel(priv, priv->freq_hz, XC_TUNE_ANALOG); in xc5000_set_radio_freq()
1046 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_params() local
1053 switch (priv->mode) { in xc5000_set_params()
1068 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_analog_params() local
1071 if (priv->i2c_props.adap == NULL) in xc5000_set_analog_params()
1086 priv->mode = params->mode; in xc5000_set_analog_params()
1093 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_get_frequency() local
1095 *freq = priv->freq_hz + priv->freq_offset; in xc5000_get_frequency()
1101 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_get_if_frequency() local
1103 *freq = priv->if_khz * 1000; in xc5000_get_if_frequency()
1109 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_get_bandwidth() local
1112 *bw = priv->bandwidth; in xc5000_get_bandwidth()
1118 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_get_status() local
1121 xc_get_lock_status(priv, &lock_status); in xc5000_get_status()
1132 struct xc5000_priv *priv = fe->tuner_priv; in xc_load_fw_and_init_tuner() local
1133 const struct xc5000_fw_cfg *desired_fw = xc5000_assign_firmware(priv->chip_id); in xc_load_fw_and_init_tuner()
1139 cancel_delayed_work(&priv->timer_sleep); in xc_load_fw_and_init_tuner()
1144 if (!priv->firmware) { in xc_load_fw_and_init_tuner()
1146 priv->i2c_props.adap->dev.parent); in xc_load_fw_and_init_tuner()
1158 priv->firmware = fw; in xc_load_fw_and_init_tuner()
1160 fw = priv->firmware; in xc_load_fw_and_init_tuner()
1173 if (priv->fw_checksum_supported) { in xc_load_fw_and_init_tuner()
1174 if (xc5000_readreg(priv, XREG_FW_CHECKSUM, &fw_ck)) { in xc_load_fw_and_init_tuner()
1189 ret = xc_initialize(priv); in xc_load_fw_and_init_tuner()
1203 if (priv->init_status_supported) { in xc_load_fw_and_init_tuner()
1204 if (xc5000_readreg(priv, XREG_INIT_STATUS, &fw_ck)) { in xc_load_fw_and_init_tuner()
1218 if (priv->pll_register_no) { in xc_load_fw_and_init_tuner()
1219 xc5000_readreg(priv, priv->pll_register_no, in xc_load_fw_and_init_tuner()
1230 ret = xc_write_reg(priv, XREG_SIGNALSOURCE, XC_RF_MODE_CABLE); in xc_load_fw_and_init_tuner()
1248 struct xc5000_priv *priv =container_of(timer_sleep, struct xc5000_priv, in xc5000_do_timer_sleep() local
1250 struct dvb_frontend *fe = priv->fe; in xc5000_do_timer_sleep()
1267 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_sleep() local
1275 schedule_delayed_work(&priv->timer_sleep, in xc5000_sleep()
1283 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_suspend() local
1288 cancel_delayed_work(&priv->timer_sleep); in xc5000_suspend()
1301 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_resume() local
1307 if (!priv->firmware) in xc5000_resume()
1315 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_init() local
1324 xc_debug_dump(priv); in xc5000_init()
1331 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_release() local
1337 if (priv) { in xc5000_release()
1338 cancel_delayed_work(&priv->timer_sleep); in xc5000_release()
1339 if (priv->firmware) { in xc5000_release()
1340 release_firmware(priv->firmware); in xc5000_release()
1341 priv->firmware = NULL; in xc5000_release()
1343 hybrid_tuner_release_state(priv); in xc5000_release()
1355 struct xc5000_priv *priv = fe->tuner_priv; in xc5000_set_config() local
1361 priv->if_khz = p->if_khz; in xc5000_set_config()
1364 priv->radio_input = p->radio_input; in xc5000_set_config()
1367 priv->output_amp = p->output_amp; in xc5000_set_config()
1400 struct xc5000_priv *priv = NULL; in xc5000_attach() local
1410 instance = hybrid_tuner_request_state(struct xc5000_priv, priv, in xc5000_attach()
1418 priv->bandwidth = 6000000; in xc5000_attach()
1419 fe->tuner_priv = priv; in xc5000_attach()
1420 priv->fe = fe; in xc5000_attach()
1421 INIT_DELAYED_WORK(&priv->timer_sleep, xc5000_do_timer_sleep); in xc5000_attach()
1425 fe->tuner_priv = priv; in xc5000_attach()
1429 if (priv->if_khz == 0) { in xc5000_attach()
1433 priv->if_khz = cfg->if_khz; in xc5000_attach()
1436 if (priv->xtal_khz == 0) in xc5000_attach()
1437 priv->xtal_khz = cfg->xtal_khz; in xc5000_attach()
1439 if (priv->radio_input == 0) in xc5000_attach()
1440 priv->radio_input = cfg->radio_input; in xc5000_attach()
1444 if ((priv->chip_id == 0) || (cfg->chip_id)) in xc5000_attach()
1447 priv->chip_id = (cfg->chip_id) ? cfg->chip_id : 0; in xc5000_attach()
1451 if ((priv->output_amp == 0) || (cfg->output_amp)) in xc5000_attach()
1453 priv->output_amp = (cfg->output_amp) ? cfg->output_amp : 0x8a; in xc5000_attach()
1458 if (xc5000_readreg(priv, XREG_PRODUCT_ID, &id) != 0) in xc5000_attach()