Lines Matching refs:demod
208 #define DRXJ_WAKE_UP_KEY (demod->my_i2c_dev_addr->i2c_addr)
225 * \brief Timeout value for waiting on demod lock during channel scan (millisec).
483 * Block writes speed up I2C traffic between host and demod.
491 * Block read speed up I2C traffic between host and demod.
864 0, /* millisec to wait for demod lock */
896 &drxj_default_comm_attr_g, /* demod common attributes */
897 &drxj_data_g /* demod device specific attributes */
1025 ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat);
1028 ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode);
1030 static int power_down_aud(struct drx_demod_instance *demod);
1033 ctrl_set_cfg_pre_saw(struct drx_demod_instance *demod, struct drxj_cfg_pre_saw *pre_saw);
1036 ctrl_set_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain *afe_gain);
2224 * \brief Configure HI with settings stored in the demod structure.
2225 * \param demod Demodulator.
2233 static int hi_cfg_command(const struct drx_demod_instance *demod)
2240 ext_attr = (struct drxj_data *) demod->my_ext_attr;
2250 rc = hi_command(demod->my_i2c_dev_addr, &hi_cmd, &result);
2267 * \brief Configure HI with settings stored in the demod structure.
2377 * \fn int init_hi( const struct drx_demod_instance *demod )
2379 * \param demod pointer to demod data.
2389 static int init_hi(const struct drx_demod_instance *demod)
2396 ext_attr = (struct drxj_data *) demod->my_ext_attr;
2397 common_attr = (struct drx_common_attr *) demod->my_common_attr;
2398 dev_addr = demod->my_i2c_dev_addr;
2435 rc = hi_cfg_command(demod);
2460 * \param demod Pointer to demodulator instance.
2473 static int get_device_capabilities(struct drx_demod_instance *demod)
2483 common_attr = (struct drx_common_attr *) demod->my_common_attr;
2484 ext_attr = (struct drxj_data *) demod->my_ext_attr;
2485 dev_addr = demod->my_i2c_dev_addr;
2666 * \param demod Pointer to demodulator instance.
2677 static int power_up_device(struct drx_demod_instance *demod)
2684 dev_addr = demod->my_i2c_dev_addr;
2728 ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_output *cfg_data)
2749 if ((demod == NULL) || (cfg_data == NULL))
2752 dev_addr = demod->my_i2c_dev_addr;
2753 ext_attr = (struct drxj_data *) demod->my_ext_attr;
2754 common_attr = (struct drx_common_attr *) demod->my_common_attr;
3371 static int set_mpegtei_handling(struct drx_demod_instance *demod)
3380 dev_addr = demod->my_i2c_dev_addr;
3381 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3444 static int bit_reverse_mpeg_output(struct drx_demod_instance *demod)
3451 dev_addr = demod->my_i2c_dev_addr;
3452 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3487 static int set_mpeg_start_width(struct drx_demod_instance *demod)
3495 dev_addr = demod->my_i2c_dev_addr;
3496 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3497 common_attr = demod->my_common_attr;
3531 * \param demod Pointer to demodulator instance.
3535 static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg *uio_cfg)
3540 if ((uio_cfg == NULL) || (demod == NULL))
3543 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3546 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
3566 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0, 0);
3589 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, 0, 0);
3612 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, 0, 0);
3633 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, 0, 0);
3651 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
3665 * \param demod Pointer to demodulator instance.
3670 ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
3677 if ((uio_data == NULL) || (demod == NULL))
3680 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3683 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
3705 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value, 0);
3712 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3723 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3744 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value, 0);
3751 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3762 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3783 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value, 0);
3790 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, &value, 0);
3801 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, value, 0);
3823 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value, 0);
3830 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3841 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3853 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
3874 * \param demod Pointer to demodulator instance.
3880 ctrl_i2c_bridge(struct drx_demod_instance *demod, bool *bridge_closed)
3896 return hi_command(demod->my_i2c_dev_addr, &hi_cmd, &result);
3913 static int smart_ant_init(struct drx_demod_instance *demod)
3921 dev_addr = demod->my_i2c_dev_addr;
3922 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3925 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
3951 rc = ctrl_set_uio_cfg(demod, &uio_cfg);
3956 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0x13, 0);
3961 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03, 0);
3968 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
4251 * \param demod demod instance
4258 static int adc_sync_measurement(struct drx_demod_instance *demod, u16 *count)
4264 dev_addr = demod->my_i2c_dev_addr;
4311 * \param demod demod instance
4321 static int adc_synchronization(struct drx_demod_instance *demod)
4327 dev_addr = demod->my_i2c_dev_addr;
4329 rc = adc_sync_measurement(demod, &count);
4352 rc = adc_sync_measurement(demod, &count);
4380 * \param demod instance of demodulator.
4384 static int init_agc(struct drx_demod_instance *demod)
4408 dev_addr = demod->my_i2c_dev_addr;
4409 common_attr = (struct drx_common_attr *) demod->my_common_attr;
4410 ext_attr = (struct drxj_data *) demod->my_ext_attr;
4756 * \param demod instance of demodulator.
4762 set_frequency(struct drx_demod_instance *demod,
4765 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
4766 struct drxj_data *ext_attr = demod->my_ext_attr;
4783 tuner_mirror = demod->my_common_attr->mirror_freq_spect ? false : true;
4812 intermediate_freq = demod->my_common_attr->intermediate_freq;
4813 sampling_frequency = demod->my_common_attr->sys_clock_freq / 3;
4854 * \param demod Pointer to demod instance
4862 static int get_acc_pkt_err(struct drx_demod_instance *demod, u16 *packet_err)
4871 ext_attr = (struct drxj_data *) demod->my_ext_attr;
4872 dev_addr = demod->my_i2c_dev_addr;
4906 * \param demod instance of demodulator.
4911 set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings, bool atomic)
4921 common_attr = (struct drx_common_attr *) demod->my_common_attr;
4922 dev_addr = demod->my_i2c_dev_addr;
4923 ext_attr = (struct drxj_data *) demod->my_ext_attr;
5120 * \param demod instance of demodulator.
5125 set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings, bool atomic)
5135 common_attr = (struct drx_common_attr *) demod->my_common_attr;
5136 dev_addr = demod->my_i2c_dev_addr;
5137 ext_attr = (struct drxj_data *) demod->my_ext_attr;
5349 * \param demod instance of demodulator.
5353 static int set_iqm_af(struct drx_demod_instance *demod, bool active)
5359 dev_addr = demod->my_i2c_dev_addr;
5395 * \param demod instance of demodulator.
5399 static int power_down_vsb(struct drx_demod_instance *demod, bool primary)
5401 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
5445 rc = set_iqm_af(demod, false);
5479 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
5492 * \brief Set ATSC demod.
5493 * \param demod instance of demodulator.
5496 static int set_vsb_leak_n_gain(struct drx_demod_instance *demod)
5689 dev_addr = demod->my_i2c_dev_addr;
5708 * \brief Set 8VSB demod.
5709 * \param demod instance of demodulator.
5713 static int set_vsb(struct drx_demod_instance *demod)
5753 dev_addr = demod->my_i2c_dev_addr;
5754 common_attr = (struct drx_common_attr *) demod->my_common_attr;
5755 ext_attr = (struct drxj_data *) demod->my_ext_attr;
6048 rc = set_iqm_af(demod, true);
6053 rc = adc_synchronization(demod);
6059 rc = init_agc(demod);
6064 rc = set_agc_if(demod, &(ext_attr->vsb_if_agc_cfg), false);
6069 rc = set_agc_rf(demod, &(ext_attr->vsb_rf_agc_cfg), false);
6080 rc = ctrl_set_cfg_afe_gain(demod, &vsb_pga_cfg);
6086 rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->vsb_pre_saw_cfg));
6093 rc = set_mpegtei_handling(demod);
6098 rc = bit_reverse_mpeg_output(demod);
6103 rc = set_mpeg_start_width(demod);
6116 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
6355 * \param demod instance of demodulator.
6359 static int power_down_qam(struct drx_demod_instance *demod, bool primary)
6368 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
6370 struct drx_common_attr *common_attr = demod->my_common_attr;
6407 rc = set_iqm_af(demod, false);
6443 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
6459 * \param demod instance of demod.
6474 set_qam_measurement(struct drx_demod_instance *demod,
6491 dev_addr = demod->my_i2c_dev_addr;
6492 ext_attr = (struct drxj_data *) demod->my_ext_attr;
6671 * \param demod instance of demod.
6674 static int set_qam16(struct drx_demod_instance *demod)
6676 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
6906 * \param demod instance of demod.
6909 static int set_qam32(struct drx_demod_instance *demod)
6911 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7141 * \param demod instance of demod.
7144 static int set_qam64(struct drx_demod_instance *demod)
7146 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7377 * \param demod: instance of demod.
7380 static int set_qam128(struct drx_demod_instance *demod)
7382 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7612 * \param demod: instance of demod.
7615 static int set_qam256(struct drx_demod_instance *demod)
7617 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7849 * \brief Set QAM demod.
7850 * \param demod: instance of demod.
7855 set_qam(struct drx_demod_instance *demod,
7996 dev_addr = demod->my_i2c_dev_addr;
7997 ext_attr = (struct drxj_data *) demod->my_ext_attr;
7998 common_attr = (struct drx_common_attr *) demod->my_common_attr;
8150 rc = set_qam_measurement(demod, channel->constellation, channel->symbolrate);
8161 rc = set_frequency(demod, channel, tuner_freq_offset);
8454 rc = set_iqm_af(demod, true);
8459 rc = adc_synchronization(demod);
8465 rc = init_agc(demod);
8470 rc = set_agc_if(demod, &(ext_attr->qam_if_agc_cfg), false);
8475 rc = set_agc_rf(demod, &(ext_attr->qam_rf_agc_cfg), false);
8486 rc = ctrl_set_cfg_afe_gain(demod, &qam_pga_cfg);
8492 rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->qam_pre_saw_cfg));
8556 rc = set_qam16(demod);
8563 rc = set_qam32(demod);
8570 rc = set_qam64(demod);
8577 rc = set_qam128(demod);
8584 rc = set_qam256(demod);
8603 rc = set_mpegtei_handling(demod);
8608 rc = bit_reverse_mpeg_output(demod);
8613 rc = set_mpeg_start_width(demod);
8626 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
8672 static int ctrl_get_qam_sig_quality(struct drx_demod_instance *demod);
8674 static int qam_flip_spec(struct drx_demod_instance *demod, struct drx_channel *channel)
8676 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
8677 struct drxj_data *ext_attr = demod->my_ext_attr;
8860 * \param demod: instance of demod.
8867 qam64auto(struct drx_demod_instance *demod,
8871 struct drxj_data *ext_attr = demod->my_ext_attr;
8872 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
8887 rc = ctrl_lock_status(demod, lock_status);
8896 rc = ctrl_get_qam_sig_quality(demod);
8913 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8918 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
8931 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8936 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data & 0xFFFE, 0);
8943 rc = qam_flip_spec(demod, channel);
8965 rc = ctrl_get_qam_sig_quality(demod);
8971 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8976 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
9008 * \param demod: instance of demod.
9015 qam256auto(struct drx_demod_instance *demod,
9019 struct drxj_data *ext_attr = demod->my_ext_attr;
9020 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9034 rc = ctrl_lock_status(demod, lock_status);
9042 rc = ctrl_get_qam_sig_quality(demod);
9060 rc = qam_flip_spec(demod, channel);
9092 * \param demod: instance of demod.
9097 set_qam_channel(struct drx_demod_instance *demod,
9106 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9125 rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_ALL);
9132 rc = qam64auto(demod, channel, tuner_freq_offset,
9135 rc = qam256auto(demod, channel, tuner_freq_offset,
9155 rc = set_qam(demod, channel, tuner_freq_offset,
9161 rc = qam256auto(demod, channel, tuner_freq_offset,
9181 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr,
9188 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9195 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9203 rc = set_qam(demod, channel, tuner_freq_offset,
9209 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9217 rc = qam64auto(demod, channel, tuner_freq_offset,
9236 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr,
9243 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9250 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9258 rc = set_qam(demod, channel, tuner_freq_offset,
9264 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9271 rc = qam64auto(demod, channel, tuner_freq_offset,
9370 * \param demod Pointer to demod instance
9382 static int get_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
9384 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9460 ctrl_get_qam_sig_quality(struct drx_demod_instance *demod)
9462 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9463 struct drxj_data *ext_attr = demod->my_ext_attr;
9647 rc = get_acc_pkt_err(demod, &sig_quality->packet_error);
9737 * \param demod instance of demodulator
9746 power_down_atv(struct drx_demod_instance *demod, enum drx_standard standard, bool primary)
9748 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9790 rc = set_iqm_af(demod, false);
9822 rc = power_down_aud(demod);
9837 * \param demod instance of demodulator
9841 static int power_down_aud(struct drx_demod_instance *demod)
9847 dev_addr = (struct i2c_device_addr *)demod->my_i2c_dev_addr;
9848 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9866 * \param demod instance of demodulator.
9870 static int set_orx_nsu_aox(struct drx_demod_instance *demod, bool active)
9872 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9900 * \param demod instance of demodulator
9921 static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_param)
9948 dev_addr = demod->my_i2c_dev_addr;
9949 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9965 rc = set_orx_nsu_aox(demod, false);
10403 rc = set_orx_nsu_aox(demod, true);
10435 * \param demod instance of demod.
10444 ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
10458 if ((demod == NULL) || (channel == NULL))
10461 dev_addr = demod->my_i2c_dev_addr;
10462 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10509 rc = ctrl_set_uio_cfg(demod, &uio_cfg);
10604 rc = ctrl_uio_write(demod, &uio1);
10619 /*== Setup demod for specific standard ====================================*/
10626 rc = set_vsb(demod);
10631 rc = set_frequency(demod, channel, tuner_freq_offset);
10641 rc = set_qam_channel(demod, channel, tuner_freq_offset);
10677 ctrl_sig_quality(struct drx_demod_instance *demod,
10680 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
10681 struct drxj_data *ext_attr = demod->my_ext_attr;
10689 rc = get_sig_strength(demod, &strength);
10701 rc = get_acc_pkt_err(demod, &pkt);
10763 rc = ctrl_get_qam_sig_quality(demod);
10790 ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat)
10806 if ((demod == NULL) || (lock_stat == NULL))
10809 dev_addr = demod->my_i2c_dev_addr;
10810 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10880 ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
10887 if ((standard == NULL) || (demod == NULL))
10890 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10901 rc = power_down_qam(demod, false);
10909 rc = power_down_vsb(demod, false);
10937 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
10946 rc = set_vsb_leak_n_gain(demod);
11028 * \param demod Pointer to demodulator instance.
11038 ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
11046 common_attr = (struct drx_common_attr *) demod->my_common_attr;
11047 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11048 dev_addr = demod->my_i2c_dev_addr;
11079 rc = power_up_device(demod);
11107 rc = power_down_qam(demod, true);
11114 rc = power_down_vsb(demod, true);
11127 rc = power_down_atv(demod, ext_attr->standard, true);
11157 rc = init_hi(demod);
11164 rc = hi_cfg_command(demod);
11186 * \param demod demod instance
11195 ctrl_set_cfg_pre_saw(struct drx_demod_instance *demod, struct drxj_cfg_pre_saw *pre_saw)
11201 dev_addr = demod->my_i2c_dev_addr;
11202 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11249 * \param demod demod instance
11258 ctrl_set_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain *afe_gain)
11269 dev_addr = demod->my_i2c_dev_addr;
11270 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11331 static int drx_ctrl_u_code(struct drx_demod_instance *demod,
11334 static int drxj_set_lna_state(struct drx_demod_instance *demod, bool state);
11338 * \brief Open the demod instance, configure device, configure drxdriver
11347 static int drxj_open(struct drx_demod_instance *demod)
11358 if ((demod == NULL) ||
11359 (demod->my_common_attr == NULL) ||
11360 (demod->my_ext_attr == NULL) ||
11361 (demod->my_i2c_dev_addr == NULL) ||
11362 (demod->my_common_attr->is_opened)) {
11367 if (demod->my_ext_attr == NULL)
11370 dev_addr = demod->my_i2c_dev_addr;
11371 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11372 common_attr = (struct drx_common_attr *) demod->my_common_attr;
11374 rc = ctrl_power_mode(demod, &power_mode);
11386 rc = get_device_capabilities(demod);
11420 rc = set_iqm_af(demod, false);
11425 rc = set_orx_nsu_aox(demod, false);
11431 rc = init_hi(demod);
11441 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
11447 rc = power_down_aud(demod);
11466 if (DRX_ISPOWERDOWNMODE(demod->my_common_attr->current_power_mode)) {
11472 rc = drx_ctrl_u_code(demod, &ucode_info, UCODE_UPLOAD);
11478 rc = drx_ctrl_u_code(demod, &ucode_info, UCODE_VERIFY);
11502 rc = smart_ant_init(demod);
11538 rc = ctrl_set_oob(demod, NULL);
11547 demod->my_common_attr->is_opened = true;
11548 drxj_set_lna_state(demod, false);
11558 * \brief Close the demod instance, power down the device
11562 static int drxj_close(struct drx_demod_instance *demod)
11564 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
11568 if ((demod->my_common_attr == NULL) ||
11569 (demod->my_ext_attr == NULL) ||
11570 (demod->my_i2c_dev_addr == NULL) ||
11571 (!demod->my_common_attr->is_opened)) {
11576 rc = ctrl_power_mode(demod, &power_mode);
11588 rc = ctrl_power_mode(demod, &power_mode);
11594 DRX_ATTR_ISOPENED(demod) = false;
11598 DRX_ATTR_ISOPENED(demod) = false;
11638 * @demod: demod structure
11642 static int drx_check_firmware(struct drx_demod_instance *demod, u8 *mc_data,
11657 DRX_ATTR_MCRECORD(demod).aux_type = 0;
11658 DRX_ATTR_MCRECORD(demod).mc_dev_type = 0;
11659 DRX_ATTR_MCRECORD(demod).mc_version = 0;
11660 DRX_ATTR_MCRECORD(demod).mc_base_version = 0;
11701 DRX_ATTR_MCRECORD(demod).aux_type = auxtype;
11702 DRX_ATTR_MCRECORD(demod).mc_dev_type = mc_dev_type;
11703 DRX_ATTR_MCRECORD(demod).mc_version = mc_version;
11704 DRX_ATTR_MCRECORD(demod).mc_base_version = mc_base_version;
11740 static int drx_ctrl_u_code(struct drx_demod_instance *demod,
11744 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
11760 if (!demod->firmware) {
11763 rc = request_firmware(&fw, mc_file, demod->i2c->dev.parent);
11768 demod->firmware = fw;
11770 if (demod->firmware->size < 2 * sizeof(u16)) {
11777 mc_file, demod->firmware->size);
11780 mc_data_init = demod->firmware->data;
11781 size = demod->firmware->size;
11797 rc = drx_check_firmware(demod, (u8 *)mc_data_init, size);
11905 release_firmware(demod->firmware);
11906 demod->firmware = NULL;
11912 static int drxj_set_lna_state(struct drx_demod_instance *demod, bool state)
11921 result = ctrl_set_uio_cfg(demod, &uio_cfg);
11929 result = ctrl_uio_write(demod, &uio_data);
11947 struct drx_demod_instance *demod = state->demod;
11956 result = ctrl_power_mode(demod, &power_mode);
11968 struct drx_demod_instance *demod = state->demod;
11974 result = ctrl_lock_status(demod, &lock_status);
12008 ctrl_sig_quality(demod, lock_status);
12084 struct drx_demod_instance *demod = state->demod;
12107 /* Bring the demod out of sleep */
12122 demod->my_common_attr->intermediate_freq = int_freq / 1000;
12152 result = ctrl_set_standard(demod, &standard);
12166 result = ctrl_set_channel(demod, &channel);
12172 drxj_set_lna_state(demod, false);
12189 struct drx_demod_instance *demod = state->demod;
12208 result = ctrl_i2c_bridge(demod, &i2c_gate_state);
12222 struct drx_demod_instance *demod = state->demod;
12227 demod->my_common_attr->is_opened = false;
12228 rc = drxj_open(demod);
12241 struct drx_demod_instance *demod = state->demod;
12242 struct drxj_data *ext_attr = demod->my_ext_attr;
12252 return drxj_set_lna_state(demod, c->lna);
12265 struct drx_demod_instance *demod = state->demod;
12269 drxj_close(demod);
12271 kfree(demod->my_ext_attr);
12272 kfree(demod->my_common_attr);
12273 kfree(demod->my_i2c_dev_addr);
12274 release_firmware(demod->firmware);
12275 kfree(demod);
12287 struct drx_demod_instance *demod = NULL;
12296 demod = kmemdup(&drxj_default_demod_g,
12298 if (demod == NULL)
12318 state->demod = demod;
12320 /* setup the demod data */
12321 demod->my_i2c_dev_addr = demod_addr;
12322 demod->my_common_attr = demod_comm_attr;
12323 demod->my_i2c_dev_addr->user_data = state;
12324 demod->my_common_attr->microcode_file = DRX39XX_MAIN_FIRMWARE;
12325 demod->my_common_attr->verify_microcode = true;
12326 demod->my_common_attr->intermediate_freq = 5000;
12327 demod->my_common_attr->current_power_mode = DRX_POWER_DOWN;
12328 demod->my_ext_attr = demod_ext_attr;
12330 demod->i2c = i2c;
12332 result = drxj_open(demod);
12370 kfree(demod);