Lines Matching refs:priv

254 static int xc4000_readreg(struct xc4000_priv *priv, u16 reg, u16 *val);
256 static void xc_debug_dump(struct xc4000_priv *priv);
258 static int xc_send_i2c_data(struct xc4000_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()
262 if (i2c_transfer(priv->i2c_props.adap, &msg, 1) != 1) { in xc_send_i2c_data()
263 if (priv->ignore_i2c_write_errors == 0) { in xc_send_i2c_data()
277 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_tuner_reset() local
283 ret = fe->callback(((fe->dvb) && (fe->dvb->priv)) ? in xc4000_tuner_reset()
284 fe->dvb->priv : in xc4000_tuner_reset()
285 priv->i2c_props.adap->algo_data, in xc4000_tuner_reset()
300 static int xc_write_reg(struct xc4000_priv *priv, u16 regAddr, u16 i2cData) in xc_write_reg() argument
309 result = xc_send_i2c_data(priv, buf, 4); in xc_write_reg()
316 struct xc4000_priv *priv = fe->tuner_priv; in xc_load_i2c_sequence() local
353 result = xc_send_i2c_data(priv, buf, in xc_load_i2c_sequence()
367 static int xc_set_tv_standard(struct xc4000_priv *priv, in xc_set_tv_standard() argument
374 xc4000_standard[priv->video_standard].Name); in xc_set_tv_standard()
377 priv->ignore_i2c_write_errors = 1; in xc_set_tv_standard()
379 ret = xc_write_reg(priv, XREG_VIDEO_MODE, video_mode); in xc_set_tv_standard()
381 ret = xc_write_reg(priv, XREG_AUDIO_MODE, audio_mode); in xc_set_tv_standard()
383 priv->ignore_i2c_write_errors = 0; in xc_set_tv_standard()
388 static int xc_set_signal_source(struct xc4000_priv *priv, u16 rf_mode) in xc_set_signal_source() argument
399 return xc_write_reg(priv, XREG_SIGNALSOURCE, rf_mode); in xc_set_signal_source()
404 static int xc_set_rf_frequency(struct xc4000_priv *priv, u32 freq_hz) in xc_set_rf_frequency() argument
420 return xc_write_reg(priv, XREG_RF_FREQ, freq_code); in xc_set_rf_frequency()
423 static int xc_get_adc_envelope(struct xc4000_priv *priv, u16 *adc_envelope) in xc_get_adc_envelope() argument
425 return xc4000_readreg(priv, XREG_ADC_ENV, adc_envelope); in xc_get_adc_envelope()
428 static int xc_get_frequency_error(struct xc4000_priv *priv, u32 *freq_error_hz) in xc_get_frequency_error() argument
434 result = xc4000_readreg(priv, XREG_FREQ_ERROR, &regData); in xc_get_frequency_error()
444 static int xc_get_lock_status(struct xc4000_priv *priv, u16 *lock_status) in xc_get_lock_status() argument
446 return xc4000_readreg(priv, XREG_LOCK, lock_status); in xc_get_lock_status()
449 static int xc_get_version(struct xc4000_priv *priv, in xc_get_version() argument
456 result = xc4000_readreg(priv, XREG_VERSION, &data); in xc_get_version()
468 static int xc_get_hsync_freq(struct xc4000_priv *priv, u32 *hsync_freq_hz) in xc_get_hsync_freq() argument
473 result = xc4000_readreg(priv, XREG_HSYNC_FREQ, &regData); in xc_get_hsync_freq()
481 static int xc_get_frame_lines(struct xc4000_priv *priv, u16 *frame_lines) in xc_get_frame_lines() argument
483 return xc4000_readreg(priv, XREG_FRAME_LINES, frame_lines); in xc_get_frame_lines()
486 static int xc_get_quality(struct xc4000_priv *priv, u16 *quality) in xc_get_quality() argument
488 return xc4000_readreg(priv, XREG_QUALITY, quality); in xc_get_quality()
491 static int xc_get_signal_level(struct xc4000_priv *priv, u16 *signal) in xc_get_signal_level() argument
493 return xc4000_readreg(priv, XREG_SIGNAL_LEVEL, signal); in xc_get_signal_level()
496 static int xc_get_noise_level(struct xc4000_priv *priv, u16 *noise) in xc_get_noise_level() argument
498 return xc4000_readreg(priv, XREG_NOISE_LEVEL, noise); in xc_get_noise_level()
501 static u16 xc_wait_for_lock(struct xc4000_priv *priv) in xc_wait_for_lock() argument
507 xc_get_lock_status(priv, &lock_state); in xc_wait_for_lock()
516 static int xc_tune_channel(struct xc4000_priv *priv, u32 freq_hz) in xc_tune_channel() argument
524 priv->ignore_i2c_write_errors = 1; in xc_tune_channel()
525 result = xc_set_rf_frequency(priv, freq_hz); in xc_tune_channel()
526 priv->ignore_i2c_write_errors = 0; in xc_tune_channel()
532 if ((priv->cur_fw.type & (FM | DTV6 | DTV7 | DTV78 | DTV8)) == 0) { in xc_tune_channel()
533 if (xc_wait_for_lock(priv) != 1) in xc_tune_channel()
544 xc_debug_dump(priv); in xc_tune_channel()
549 static int xc4000_readreg(struct xc4000_priv *priv, u16 reg, u16 *val) in xc4000_readreg() argument
554 { .addr = priv->i2c_props.addr, in xc4000_readreg()
556 { .addr = priv->i2c_props.addr, in xc4000_readreg()
560 if (i2c_transfer(priv->i2c_props.adap, msg, 2) != 2) { in xc4000_readreg()
639 struct xc4000_priv *priv = fe->tuner_priv; in seek_firmware() local
643 if (!priv->firm) { in seek_firmware()
652 for (i = 0; i < priv->firm_size; i++) { in seek_firmware()
654 (priv->firm[i].id ^ (*id)) & (*id); in seek_firmware()
656 (priv->firm[i].type ^ type) in seek_firmware()
689 *id = priv->firm[i].id; in seek_firmware()
704 struct xc4000_priv *priv = fe->tuner_priv; in load_firmware() local
712 p = priv->firm[pos].ptr; in load_firmware()
715 priv->ignore_i2c_write_errors = 1; in load_firmware()
719 priv->ignore_i2c_write_errors = 0; in load_firmware()
726 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_fwupload() local
739 priv->i2c_props.adap->dev.parent); in xc4000_fwupload()
744 priv->i2c_props.adap->dev.parent); in xc4000_fwupload()
749 priv->i2c_props.adap->dev.parent); in xc4000_fwupload()
777 priv->firm_version = get_unaligned_le16(p); in xc4000_fwupload()
785 priv->firm_version >> 8, priv->firm_version & 0xff); in xc4000_fwupload()
787 priv->firm = kcalloc(n_array, sizeof(*priv->firm), GFP_KERNEL); in xc4000_fwupload()
788 if (priv->firm == NULL) { in xc4000_fwupload()
793 priv->firm_size = n_array; in xc4000_fwupload()
835 priv->firm[n].ptr = kzalloc(size, GFP_KERNEL); in xc4000_fwupload()
836 if (priv->firm[n].ptr == NULL) { in xc4000_fwupload()
849 memcpy(priv->firm[n].ptr, p, size); in xc4000_fwupload()
850 priv->firm[n].type = type; in xc4000_fwupload()
851 priv->firm[n].id = id; in xc4000_fwupload()
852 priv->firm[n].size = size; in xc4000_fwupload()
853 priv->firm[n].int_freq = int_freq; in xc4000_fwupload()
858 if (n + 1 != priv->firm_size) { in xc4000_fwupload()
882 struct xc4000_priv *priv = fe->tuner_priv; in load_scode() local
895 for (pos = 0; pos < priv->firm_size; pos++) { in load_scode()
896 if ((priv->firm[pos].int_freq == int_freq) && in load_scode()
897 (priv->firm[pos].type & HAS_IF)) in load_scode()
900 if (pos == priv->firm_size) in load_scode()
904 p = priv->firm[pos].ptr; in load_scode()
906 if (priv->firm[pos].size != 12 * 16 || scode >= 16) in load_scode()
912 dump_firm_type_and_int_freq(priv->firm[pos].type, in load_scode()
913 priv->firm[pos].int_freq); in load_scode()
914 printk(KERN_CONT "(%x), id %016llx.\n", priv->firm[pos].type, in load_scode()
922 rc = xc_write_reg(priv, XREG_DIRECTSITTING_MODE, 0); in load_scode()
928 rc = xc_send_i2c_data(priv, scode_buf, 13); in load_scode()
938 xc_send_i2c_data(priv, indirect_mode, sizeof(indirect_mode)); in load_scode()
947 struct xc4000_priv *priv = fe->tuner_priv; in check_firmware() local
956 if (!priv->firm) { in check_firmware()
983 if (priv->cur_fw.type & BASE) { in check_firmware()
989 memset(&priv->cur_fw, 0, sizeof(priv->cur_fw)); in check_firmware()
1021 if (priv->cur_fw.type == (BASE | new_fw.type) && in check_firmware()
1022 priv->cur_fw.std_req == std) { in check_firmware()
1028 priv->cur_fw.scode_table = 0; in check_firmware()
1037 if (priv->cur_fw.scode_table == new_fw.scode_table && in check_firmware()
1038 priv->cur_fw.scode_nr == new_fw.scode_nr) { in check_firmware()
1050 rc = xc4000_readreg(priv, XREG_PRODUCT_ID, &hwmodel); in check_firmware()
1052 if (xc_get_version(priv, &hw_major, &hw_minor, &fw_major, in check_firmware()
1063 if (priv->firm_version != ((fw_major << 8) | fw_minor)) { in check_firmware()
1071 if (priv->hwmodel == 0 && in check_firmware()
1074 priv->hwmodel = hwmodel; in check_firmware()
1075 priv->hwvers = (hw_major << 8) | hw_minor; in check_firmware()
1076 } else if (priv->hwmodel == 0 || priv->hwmodel != hwmodel || in check_firmware()
1077 priv->hwvers != ((hw_major << 8) | hw_minor)) { in check_firmware()
1084 priv->cur_fw = new_fw; in check_firmware()
1092 priv->cur_fw.type |= BASE; in check_firmware()
1097 memset(&priv->cur_fw, 0, sizeof(priv->cur_fw)); in check_firmware()
1110 static void xc_debug_dump(struct xc4000_priv *priv) in xc_debug_dump() argument
1123 xc_get_adc_envelope(priv, &adc_envelope); in xc_debug_dump()
1126 xc_get_frequency_error(priv, &freq_error_hz); in xc_debug_dump()
1129 xc_get_lock_status(priv, &lock_status); in xc_debug_dump()
1133 xc_get_version(priv, &hw_majorversion, &hw_minorversion, in xc_debug_dump()
1139 if (priv->video_standard < XC4000_DTV6) { in xc_debug_dump()
1140 xc_get_hsync_freq(priv, &hsync_freq_hz); in xc_debug_dump()
1144 xc_get_frame_lines(priv, &frame_lines); in xc_debug_dump()
1148 xc_get_quality(priv, &quality); in xc_debug_dump()
1151 xc_get_signal_level(priv, &signal); in xc_debug_dump()
1154 xc_get_noise_level(priv, &noise); in xc_debug_dump()
1163 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_set_params() local
1169 mutex_lock(&priv->lock); in xc4000_set_params()
1174 priv->rf_mode = XC_RF_MODE_AIR; in xc4000_set_params()
1175 priv->freq_offset = 1750000; in xc4000_set_params()
1176 priv->video_standard = XC4000_DTV6; in xc4000_set_params()
1181 priv->rf_mode = XC_RF_MODE_CABLE; in xc4000_set_params()
1182 priv->freq_offset = 1750000; in xc4000_set_params()
1183 priv->video_standard = XC4000_DTV6; in xc4000_set_params()
1191 priv->freq_offset = 2250000; in xc4000_set_params()
1193 priv->freq_offset = 2750000; in xc4000_set_params()
1195 priv->video_standard = XC4000_DTV7_8; in xc4000_set_params()
1198 priv->video_standard = XC4000_DTV6; in xc4000_set_params()
1199 priv->freq_offset = 1750000; in xc4000_set_params()
1202 priv->video_standard = XC4000_DTV7; in xc4000_set_params()
1203 priv->freq_offset = 2250000; in xc4000_set_params()
1206 priv->video_standard = XC4000_DTV8; in xc4000_set_params()
1207 priv->freq_offset = 2750000; in xc4000_set_params()
1210 priv->rf_mode = XC_RF_MODE_AIR; in xc4000_set_params()
1218 priv->freq_hz = c->frequency - priv->freq_offset; in xc4000_set_params()
1221 __func__, priv->freq_hz); in xc4000_set_params()
1224 if (check_firmware(fe, type, 0, priv->if_khz) != 0) in xc4000_set_params()
1227 priv->bandwidth = c->bandwidth_hz; in xc4000_set_params()
1229 ret = xc_set_signal_source(priv, priv->rf_mode); in xc4000_set_params()
1232 priv->rf_mode); in xc4000_set_params()
1236 video_mode = xc4000_standard[priv->video_standard].video_mode; in xc4000_set_params()
1237 audio_mode = xc4000_standard[priv->video_standard].audio_mode; in xc4000_set_params()
1238 if (type == DTV6 && priv->firm_version != 0x0102) in xc4000_set_params()
1240 ret = xc_set_tv_standard(priv, video_mode, audio_mode); in xc4000_set_params()
1248 if (xc_write_reg(priv, XREG_D_CODE, 0) == 0) in xc4000_set_params()
1250 if (priv->dvb_amplitude != 0) { in xc4000_set_params()
1251 if (xc_write_reg(priv, XREG_AMPLITUDE, in xc4000_set_params()
1252 (priv->firm_version != 0x0102 || in xc4000_set_params()
1253 priv->dvb_amplitude != 134 ? in xc4000_set_params()
1254 priv->dvb_amplitude : 132)) != 0) in xc4000_set_params()
1257 if (priv->set_smoothedcvbs != 0) { in xc4000_set_params()
1258 if (xc_write_reg(priv, XREG_SMOOTHEDCVBS, 1) != 0) in xc4000_set_params()
1266 xc_tune_channel(priv, priv->freq_hz); in xc4000_set_params()
1271 mutex_unlock(&priv->lock); in xc4000_set_params()
1279 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_set_analog_params() local
1287 mutex_lock(&priv->lock); in xc4000_set_analog_params()
1290 priv->freq_hz = params->frequency * 125L / 2; in xc4000_set_analog_params()
1293 priv->video_standard = XC4000_FM_Radio_INPUT1; in xc4000_set_analog_params()
1296 priv->video_standard = XC4000_FM_Radio_INPUT2; in xc4000_set_analog_params()
1306 mutex_lock(&priv->lock); in xc4000_set_analog_params()
1309 priv->freq_hz = params->frequency * 62500; in xc4000_set_analog_params()
1322 priv->video_standard = XC4000_MN_NTSC_PAL_Mono; in xc4000_set_analog_params()
1325 priv->video_standard = XC4000_MN_NTSC_PAL_A2; in xc4000_set_analog_params()
1328 priv->video_standard = XC4000_MN_NTSC_PAL_BTSC; in xc4000_set_analog_params()
1336 priv->video_standard = XC4000_BG_PAL_MONO; in xc4000_set_analog_params()
1340 priv->video_standard = XC4000_BG_PAL_NICAM; in xc4000_set_analog_params()
1343 priv->video_standard = XC4000_BG_PAL_NICAM; in xc4000_set_analog_params()
1348 priv->video_standard = XC4000_BG_PAL_A2; in xc4000_set_analog_params()
1351 priv->video_standard = XC4000_BG_PAL_A2; in xc4000_set_analog_params()
1361 priv->video_standard = XC4000_I_PAL_NICAM_MONO; in xc4000_set_analog_params()
1363 priv->video_standard = XC4000_I_PAL_NICAM; in xc4000_set_analog_params()
1370 priv->video_standard = XC4000_DK_PAL_MONO; in xc4000_set_analog_params()
1373 priv->video_standard = XC4000_DK_PAL_A2; in xc4000_set_analog_params()
1376 priv->video_standard = XC4000_DK_PAL_NICAM; in xc4000_set_analog_params()
1386 priv->video_standard = XC4000_DK_SECAM_NICAM; in xc4000_set_analog_params()
1388 priv->video_standard = XC4000_DK_SECAM_A2MONO; in xc4000_set_analog_params()
1391 priv->video_standard = XC4000_DK_SECAM_A2LDK3; in xc4000_set_analog_params()
1393 priv->video_standard = XC4000_DK_SECAM_A2DK1; in xc4000_set_analog_params()
1402 priv->video_standard = XC4000_L_SECAM_NICAM; in xc4000_set_analog_params()
1410 priv->video_standard = XC4000_LC_SECAM_NICAM; in xc4000_set_analog_params()
1416 priv->rf_mode = XC_RF_MODE_CABLE; in xc4000_set_analog_params()
1419 xc4000_standard[priv->video_standard].int_freq) != 0) in xc4000_set_analog_params()
1422 ret = xc_set_signal_source(priv, priv->rf_mode); in xc4000_set_analog_params()
1426 priv->rf_mode); in xc4000_set_analog_params()
1430 video_mode = xc4000_standard[priv->video_standard].video_mode; in xc4000_set_analog_params()
1431 audio_mode = xc4000_standard[priv->video_standard].audio_mode; in xc4000_set_analog_params()
1432 if (priv->video_standard < XC4000_BG_PAL_A2) { in xc4000_set_analog_params()
1435 } else if (priv->video_standard < XC4000_I_PAL_NICAM) { in xc4000_set_analog_params()
1436 if (priv->firm_version == 0x0102) in xc4000_set_analog_params()
1441 ret = xc_set_tv_standard(priv, video_mode, audio_mode); in xc4000_set_analog_params()
1448 if (xc_write_reg(priv, XREG_D_CODE, 0) == 0) in xc4000_set_analog_params()
1450 if (xc_write_reg(priv, XREG_AMPLITUDE, 1) != 0) in xc4000_set_analog_params()
1452 if (priv->set_smoothedcvbs != 0) { in xc4000_set_analog_params()
1453 if (xc_write_reg(priv, XREG_SMOOTHEDCVBS, 1) != 0) in xc4000_set_analog_params()
1461 xc_tune_channel(priv, priv->freq_hz); in xc4000_set_analog_params()
1466 mutex_unlock(&priv->lock); in xc4000_set_analog_params()
1473 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_get_signal() local
1477 mutex_lock(&priv->lock); in xc4000_get_signal()
1478 rc = xc4000_readreg(priv, XREG_SIGNAL_LEVEL, &value); in xc4000_get_signal()
1479 mutex_unlock(&priv->lock); in xc4000_get_signal()
1490 if ((priv->video_standard == XC4000_DTV6) || in xc4000_get_signal()
1491 (priv->video_standard == XC4000_DTV7) || in xc4000_get_signal()
1492 (priv->video_standard == XC4000_DTV7_8) || in xc4000_get_signal()
1493 (priv->video_standard == XC4000_DTV8)) in xc4000_get_signal()
1501 mutex_lock(&priv->lock); in xc4000_get_signal()
1502 rc = xc4000_readreg(priv, XREG_NOISE_LEVEL, &value); in xc4000_get_signal()
1503 mutex_unlock(&priv->lock); in xc4000_get_signal()
1538 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_get_frequency() local
1540 *freq = priv->freq_hz + priv->freq_offset; in xc4000_get_frequency()
1543 mutex_lock(&priv->lock); in xc4000_get_frequency()
1544 if ((priv->cur_fw.type in xc4000_get_frequency()
1547 if (xc4000_readreg(priv, XREG_SNR, &snr) == 0) { in xc4000_get_frequency()
1548 mutex_unlock(&priv->lock); in xc4000_get_frequency()
1554 mutex_unlock(&priv->lock); in xc4000_get_frequency()
1564 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_get_bandwidth() local
1567 *bw = priv->bandwidth; in xc4000_get_bandwidth()
1573 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_get_status() local
1576 mutex_lock(&priv->lock); in xc4000_get_status()
1578 if (priv->cur_fw.type & BASE) in xc4000_get_status()
1579 xc_get_lock_status(priv, &lock_status); in xc4000_get_status()
1583 if (priv->cur_fw.type & (DTV6 | DTV7 | DTV78 | DTV8)) in xc4000_get_status()
1586 mutex_unlock(&priv->lock); in xc4000_get_status()
1595 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_sleep() local
1600 mutex_lock(&priv->lock); in xc4000_sleep()
1604 (no_poweroff == 0 && priv->default_pm != 0)) && in xc4000_sleep()
1605 (priv->cur_fw.type & BASE) != 0) { in xc4000_sleep()
1607 priv->cur_fw.type = XC_POWERED_DOWN; in xc4000_sleep()
1609 if (xc_write_reg(priv, XREG_POWER_DOWN, 0) != 0) { in xc4000_sleep()
1618 mutex_unlock(&priv->lock); in xc4000_sleep()
1632 struct xc4000_priv *priv = fe->tuner_priv; in xc4000_release() local
1638 if (priv) in xc4000_release()
1639 hybrid_tuner_release_state(priv); in xc4000_release()
1672 struct xc4000_priv *priv = NULL; in xc4000_attach() local
1682 instance = hybrid_tuner_request_state(struct xc4000_priv, priv, in xc4000_attach()
1690 priv->bandwidth = 6000000; in xc4000_attach()
1692 priv->if_khz = 4560; in xc4000_attach()
1693 priv->default_pm = 0; in xc4000_attach()
1694 priv->dvb_amplitude = 134; in xc4000_attach()
1695 priv->set_smoothedcvbs = 1; in xc4000_attach()
1696 mutex_init(&priv->lock); in xc4000_attach()
1697 fe->tuner_priv = priv; in xc4000_attach()
1701 fe->tuner_priv = priv; in xc4000_attach()
1707 priv->if_khz = cfg->if_khz; in xc4000_attach()
1708 priv->default_pm = cfg->default_pm; in xc4000_attach()
1709 priv->dvb_amplitude = cfg->dvb_amplitude; in xc4000_attach()
1710 priv->set_smoothedcvbs = cfg->set_smoothedcvbs; in xc4000_attach()
1718 if (xc4000_readreg(priv, XREG_PRODUCT_ID, &id) != 0) in xc4000_attach()
1721 id = ((priv->cur_fw.type & BASE) != 0 ? in xc4000_attach()
1722 priv->hwmodel : XC_PRODUCT_ID_FW_NOT_LOADED); in xc4000_attach()
1755 mutex_lock(&priv->lock); in xc4000_attach()
1757 mutex_unlock(&priv->lock); in xc4000_attach()