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);
3613 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, 0, 0);
3635 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, 0, 0);
3654 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
3668 * \param demod Pointer to demodulator instance.
3673 ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
3680 if ((uio_data == NULL) || (demod == NULL))
3683 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3686 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
3708 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value, 0);
3715 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3726 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3747 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value, 0);
3754 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3765 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3786 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value, 0);
3793 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, &value, 0);
3804 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, value, 0);
3826 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value, 0);
3833 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
3844 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
3856 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
3877 * \param demod Pointer to demodulator instance.
3883 ctrl_i2c_bridge(struct drx_demod_instance *demod, bool *bridge_closed)
3899 return hi_command(demod->my_i2c_dev_addr, &hi_cmd, &result);
3916 static int smart_ant_init(struct drx_demod_instance *demod)
3924 dev_addr = demod->my_i2c_dev_addr;
3925 ext_attr = (struct drxj_data *) demod->my_ext_attr;
3928 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
3954 rc = ctrl_set_uio_cfg(demod, &uio_cfg);
3959 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0x13, 0);
3964 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03, 0);
3971 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
4254 * \param demod demod instance
4261 static int adc_sync_measurement(struct drx_demod_instance *demod, u16 *count)
4267 dev_addr = demod->my_i2c_dev_addr;
4314 * \param demod demod instance
4324 static int adc_synchronization(struct drx_demod_instance *demod)
4330 dev_addr = demod->my_i2c_dev_addr;
4332 rc = adc_sync_measurement(demod, &count);
4355 rc = adc_sync_measurement(demod, &count);
4383 * \param demod instance of demodulator.
4387 static int init_agc(struct drx_demod_instance *demod)
4411 dev_addr = demod->my_i2c_dev_addr;
4412 common_attr = (struct drx_common_attr *) demod->my_common_attr;
4413 ext_attr = (struct drxj_data *) demod->my_ext_attr;
4759 * \param demod instance of demodulator.
4765 set_frequency(struct drx_demod_instance *demod,
4768 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
4769 struct drxj_data *ext_attr = demod->my_ext_attr;
4786 tuner_mirror = demod->my_common_attr->mirror_freq_spect ? false : true;
4815 intermediate_freq = demod->my_common_attr->intermediate_freq;
4816 sampling_frequency = demod->my_common_attr->sys_clock_freq / 3;
4857 * \param demod Pointer to demod instance
4865 static int get_acc_pkt_err(struct drx_demod_instance *demod, u16 *packet_err)
4874 ext_attr = (struct drxj_data *) demod->my_ext_attr;
4875 dev_addr = demod->my_i2c_dev_addr;
4909 * \param demod instance of demodulator.
4914 set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings, bool atomic)
4924 common_attr = (struct drx_common_attr *) demod->my_common_attr;
4925 dev_addr = demod->my_i2c_dev_addr;
4926 ext_attr = (struct drxj_data *) demod->my_ext_attr;
5123 * \param demod instance of demodulator.
5128 set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings, bool atomic)
5138 common_attr = (struct drx_common_attr *) demod->my_common_attr;
5139 dev_addr = demod->my_i2c_dev_addr;
5140 ext_attr = (struct drxj_data *) demod->my_ext_attr;
5352 * \param demod instance of demodulator.
5356 static int set_iqm_af(struct drx_demod_instance *demod, bool active)
5362 dev_addr = demod->my_i2c_dev_addr;
5398 * \param demod instance of demodulator.
5402 static int power_down_vsb(struct drx_demod_instance *demod, bool primary)
5404 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
5448 rc = set_iqm_af(demod, false);
5482 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
5495 * \brief Set ATSC demod.
5496 * \param demod instance of demodulator.
5499 static int set_vsb_leak_n_gain(struct drx_demod_instance *demod)
5692 dev_addr = demod->my_i2c_dev_addr;
5711 * \brief Set 8VSB demod.
5712 * \param demod instance of demodulator.
5716 static int set_vsb(struct drx_demod_instance *demod)
5756 dev_addr = demod->my_i2c_dev_addr;
5757 common_attr = (struct drx_common_attr *) demod->my_common_attr;
5758 ext_attr = (struct drxj_data *) demod->my_ext_attr;
6051 rc = set_iqm_af(demod, true);
6056 rc = adc_synchronization(demod);
6062 rc = init_agc(demod);
6067 rc = set_agc_if(demod, &(ext_attr->vsb_if_agc_cfg), false);
6072 rc = set_agc_rf(demod, &(ext_attr->vsb_rf_agc_cfg), false);
6083 rc = ctrl_set_cfg_afe_gain(demod, &vsb_pga_cfg);
6089 rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->vsb_pre_saw_cfg));
6096 rc = set_mpegtei_handling(demod);
6101 rc = bit_reverse_mpeg_output(demod);
6106 rc = set_mpeg_start_width(demod);
6119 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
6358 * \param demod instance of demodulator.
6362 static int power_down_qam(struct drx_demod_instance *demod, bool primary)
6371 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
6373 struct drx_common_attr *common_attr = demod->my_common_attr;
6410 rc = set_iqm_af(demod, false);
6446 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
6462 * \param demod instance of demod.
6477 set_qam_measurement(struct drx_demod_instance *demod,
6494 dev_addr = demod->my_i2c_dev_addr;
6495 ext_attr = (struct drxj_data *) demod->my_ext_attr;
6674 * \param demod instance of demod.
6677 static int set_qam16(struct drx_demod_instance *demod)
6679 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
6909 * \param demod instance of demod.
6912 static int set_qam32(struct drx_demod_instance *demod)
6914 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7144 * \param demod instance of demod.
7147 static int set_qam64(struct drx_demod_instance *demod)
7149 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7380 * \param demod: instance of demod.
7383 static int set_qam128(struct drx_demod_instance *demod)
7385 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7615 * \param demod: instance of demod.
7618 static int set_qam256(struct drx_demod_instance *demod)
7620 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
7852 * \brief Set QAM demod.
7853 * \param demod: instance of demod.
7858 set_qam(struct drx_demod_instance *demod,
7999 dev_addr = demod->my_i2c_dev_addr;
8000 ext_attr = (struct drxj_data *) demod->my_ext_attr;
8001 common_attr = (struct drx_common_attr *) demod->my_common_attr;
8153 rc = set_qam_measurement(demod, channel->constellation, channel->symbolrate);
8164 rc = set_frequency(demod, channel, tuner_freq_offset);
8457 rc = set_iqm_af(demod, true);
8462 rc = adc_synchronization(demod);
8468 rc = init_agc(demod);
8473 rc = set_agc_if(demod, &(ext_attr->qam_if_agc_cfg), false);
8478 rc = set_agc_rf(demod, &(ext_attr->qam_rf_agc_cfg), false);
8489 rc = ctrl_set_cfg_afe_gain(demod, &qam_pga_cfg);
8495 rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->qam_pre_saw_cfg));
8559 rc = set_qam16(demod);
8566 rc = set_qam32(demod);
8573 rc = set_qam64(demod);
8580 rc = set_qam128(demod);
8587 rc = set_qam256(demod);
8606 rc = set_mpegtei_handling(demod);
8611 rc = bit_reverse_mpeg_output(demod);
8616 rc = set_mpeg_start_width(demod);
8629 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
8675 static int ctrl_get_qam_sig_quality(struct drx_demod_instance *demod);
8677 static int qam_flip_spec(struct drx_demod_instance *demod, struct drx_channel *channel)
8679 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
8680 struct drxj_data *ext_attr = demod->my_ext_attr;
8863 * \param demod: instance of demod.
8870 qam64auto(struct drx_demod_instance *demod,
8874 struct drxj_data *ext_attr = demod->my_ext_attr;
8875 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
8890 rc = ctrl_lock_status(demod, lock_status);
8899 rc = ctrl_get_qam_sig_quality(demod);
8916 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8921 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
8934 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8939 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data & 0xFFFE, 0);
8946 rc = qam_flip_spec(demod, channel);
8968 rc = ctrl_get_qam_sig_quality(demod);
8974 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
8979 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
9011 * \param demod: instance of demod.
9018 qam256auto(struct drx_demod_instance *demod,
9022 struct drxj_data *ext_attr = demod->my_ext_attr;
9023 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9037 rc = ctrl_lock_status(demod, lock_status);
9045 rc = ctrl_get_qam_sig_quality(demod);
9063 rc = qam_flip_spec(demod, channel);
9095 * \param demod: instance of demod.
9100 set_qam_channel(struct drx_demod_instance *demod,
9109 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9128 rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_ALL);
9135 rc = qam64auto(demod, channel, tuner_freq_offset,
9138 rc = qam256auto(demod, channel, tuner_freq_offset,
9158 rc = set_qam(demod, channel, tuner_freq_offset,
9164 rc = qam256auto(demod, channel, tuner_freq_offset,
9184 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr,
9191 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9198 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9206 rc = set_qam(demod, channel, tuner_freq_offset,
9212 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9220 rc = qam64auto(demod, channel, tuner_freq_offset,
9239 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr,
9246 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9253 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9261 rc = set_qam(demod, channel, tuner_freq_offset,
9267 rc = drxj_dap_write_reg16(demod->my_i2c_dev_addr,
9274 rc = qam64auto(demod, channel, tuner_freq_offset,
9373 * \param demod Pointer to demod instance
9385 static int get_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
9387 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9463 ctrl_get_qam_sig_quality(struct drx_demod_instance *demod)
9465 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9466 struct drxj_data *ext_attr = demod->my_ext_attr;
9649 rc = get_acc_pkt_err(demod, &sig_quality->packet_error);
9739 * \param demod instance of demodulator
9748 power_down_atv(struct drx_demod_instance *demod, enum drx_standard standard, bool primary)
9750 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9792 rc = set_iqm_af(demod, false);
9824 rc = power_down_aud(demod);
9839 * \param demod instance of demodulator
9843 static int power_down_aud(struct drx_demod_instance *demod)
9849 dev_addr = (struct i2c_device_addr *)demod->my_i2c_dev_addr;
9850 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9868 * \param demod instance of demodulator.
9872 static int set_orx_nsu_aox(struct drx_demod_instance *demod, bool active)
9874 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
9902 * \param demod instance of demodulator
9923 static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_param)
9950 dev_addr = demod->my_i2c_dev_addr;
9951 ext_attr = (struct drxj_data *) demod->my_ext_attr;
9967 rc = set_orx_nsu_aox(demod, false);
10405 rc = set_orx_nsu_aox(demod, true);
10437 * \param demod instance of demod.
10446 ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
10460 if ((demod == NULL) || (channel == NULL))
10463 dev_addr = demod->my_i2c_dev_addr;
10464 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10511 rc = ctrl_set_uio_cfg(demod, &uio_cfg);
10606 rc = ctrl_uio_write(demod, &uio1);
10621 /*== Setup demod for specific standard ====================================*/
10628 rc = set_vsb(demod);
10633 rc = set_frequency(demod, channel, tuner_freq_offset);
10643 rc = set_qam_channel(demod, channel, tuner_freq_offset);
10679 ctrl_sig_quality(struct drx_demod_instance *demod,
10682 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
10683 struct drxj_data *ext_attr = demod->my_ext_attr;
10691 rc = get_sig_strength(demod, &strength);
10703 rc = get_acc_pkt_err(demod, &pkt);
10765 rc = ctrl_get_qam_sig_quality(demod);
10792 ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat)
10808 if ((demod == NULL) || (lock_stat == NULL))
10811 dev_addr = demod->my_i2c_dev_addr;
10812 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10882 ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
10889 if ((standard == NULL) || (demod == NULL))
10892 ext_attr = (struct drxj_data *) demod->my_ext_attr;
10903 rc = power_down_qam(demod, false);
10911 rc = power_down_vsb(demod, false);
10938 rc = drxj_dap_read_reg16(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
10947 rc = set_vsb_leak_n_gain(demod);
11030 * \param demod Pointer to demodulator instance.
11040 ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
11048 common_attr = (struct drx_common_attr *) demod->my_common_attr;
11049 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11050 dev_addr = demod->my_i2c_dev_addr;
11082 rc = power_up_device(demod);
11110 rc = power_down_qam(demod, true);
11117 rc = power_down_vsb(demod, true);
11130 rc = power_down_atv(demod, ext_attr->standard, true);
11160 rc = init_hi(demod);
11167 rc = hi_cfg_command(demod);
11189 * \param demod demod instance
11198 ctrl_set_cfg_pre_saw(struct drx_demod_instance *demod, struct drxj_cfg_pre_saw *pre_saw)
11204 dev_addr = demod->my_i2c_dev_addr;
11205 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11252 * \param demod demod instance
11261 ctrl_set_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain *afe_gain)
11272 dev_addr = demod->my_i2c_dev_addr;
11273 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11334 static int drx_ctrl_u_code(struct drx_demod_instance *demod,
11337 static int drxj_set_lna_state(struct drx_demod_instance *demod, bool state);
11341 * \brief Open the demod instance, configure device, configure drxdriver
11350 static int drxj_open(struct drx_demod_instance *demod)
11361 if ((demod == NULL) ||
11362 (demod->my_common_attr == NULL) ||
11363 (demod->my_ext_attr == NULL) ||
11364 (demod->my_i2c_dev_addr == NULL) ||
11365 (demod->my_common_attr->is_opened)) {
11370 if (demod->my_ext_attr == NULL)
11373 dev_addr = demod->my_i2c_dev_addr;
11374 ext_attr = (struct drxj_data *) demod->my_ext_attr;
11375 common_attr = (struct drx_common_attr *) demod->my_common_attr;
11377 rc = ctrl_power_mode(demod, &power_mode);
11389 rc = get_device_capabilities(demod);
11423 rc = set_iqm_af(demod, false);
11428 rc = set_orx_nsu_aox(demod, false);
11434 rc = init_hi(demod);
11444 rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
11450 rc = power_down_aud(demod);
11469 if (DRX_ISPOWERDOWNMODE(demod->my_common_attr->current_power_mode)) {
11474 rc = drx_ctrl_u_code(demod, &ucode_info, UCODE_UPLOAD);
11480 rc = drx_ctrl_u_code(demod, &ucode_info, UCODE_VERIFY);
11504 rc = smart_ant_init(demod);
11540 rc = ctrl_set_oob(demod, NULL);
11549 demod->my_common_attr->is_opened = true;
11550 drxj_set_lna_state(demod, false);
11560 * \brief Close the demod instance, power down the device
11564 static int drxj_close(struct drx_demod_instance *demod)
11566 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
11570 if ((demod->my_common_attr == NULL) ||
11571 (demod->my_ext_attr == NULL) ||
11572 (demod->my_i2c_dev_addr == NULL) ||
11573 (!demod->my_common_attr->is_opened)) {
11578 rc = ctrl_power_mode(demod, &power_mode);
11590 rc = ctrl_power_mode(demod, &power_mode);
11596 DRX_ATTR_ISOPENED(demod) = false;
11600 DRX_ATTR_ISOPENED(demod) = false;
11640 * @demod: demod structure
11644 static int drx_check_firmware(struct drx_demod_instance *demod, u8 *mc_data,
11659 DRX_ATTR_MCRECORD(demod).aux_type = 0;
11660 DRX_ATTR_MCRECORD(demod).mc_dev_type = 0;
11661 DRX_ATTR_MCRECORD(demod).mc_version = 0;
11662 DRX_ATTR_MCRECORD(demod).mc_base_version = 0;
11703 DRX_ATTR_MCRECORD(demod).aux_type = auxtype;
11704 DRX_ATTR_MCRECORD(demod).mc_dev_type = mc_dev_type;
11705 DRX_ATTR_MCRECORD(demod).mc_version = mc_version;
11706 DRX_ATTR_MCRECORD(demod).mc_base_version = mc_base_version;
11742 static int drx_ctrl_u_code(struct drx_demod_instance *demod,
11746 struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
11762 if (!demod->firmware) {
11765 rc = request_firmware(&fw, mc_file, demod->i2c->dev.parent);
11770 demod->firmware = fw;
11772 if (demod->firmware->size < 2 * sizeof(u16)) {
11779 mc_file, demod->firmware->size);
11782 mc_data_init = demod->firmware->data;
11783 size = demod->firmware->size;
11799 rc = drx_check_firmware(demod, (u8 *)mc_data_init, size);
11908 release_firmware(demod->firmware);
11909 demod->firmware = NULL;
11915 static int drxj_set_lna_state(struct drx_demod_instance *demod, bool state)
11924 result = ctrl_set_uio_cfg(demod, &uio_cfg);
11932 result = ctrl_uio_write(demod, &uio_data);
11950 struct drx_demod_instance *demod = state->demod;
11959 result = ctrl_power_mode(demod, &power_mode);
11971 struct drx_demod_instance *demod = state->demod;
11977 result = ctrl_lock_status(demod, &lock_status);
12011 ctrl_sig_quality(demod, lock_status);
12087 struct drx_demod_instance *demod = state->demod;
12110 /* Bring the demod out of sleep */
12125 demod->my_common_attr->intermediate_freq = int_freq / 1000;
12155 result = ctrl_set_standard(demod, &standard);
12169 result = ctrl_set_channel(demod, &channel);
12175 drxj_set_lna_state(demod, false);
12192 struct drx_demod_instance *demod = state->demod;
12211 result = ctrl_i2c_bridge(demod, &i2c_gate_state);
12225 struct drx_demod_instance *demod = state->demod;
12230 demod->my_common_attr->is_opened = false;
12231 rc = drxj_open(demod);
12244 struct drx_demod_instance *demod = state->demod;
12245 struct drxj_data *ext_attr = demod->my_ext_attr;
12255 return drxj_set_lna_state(demod, c->lna);
12268 struct drx_demod_instance *demod = state->demod;
12272 drxj_close(demod);
12274 kfree(demod->my_ext_attr);
12275 kfree(demod->my_common_attr);
12276 kfree(demod->my_i2c_dev_addr);
12277 release_firmware(demod->firmware);
12278 kfree(demod);
12290 struct drx_demod_instance *demod = NULL;
12299 demod = kmemdup(&drxj_default_demod_g,
12301 if (demod == NULL)
12321 state->demod = demod;
12323 /* setup the demod data */
12324 demod->my_i2c_dev_addr = demod_addr;
12325 demod->my_common_attr = demod_comm_attr;
12326 demod->my_i2c_dev_addr->user_data = state;
12327 demod->my_common_attr->microcode_file = DRX39XX_MAIN_FIRMWARE;
12328 demod->my_common_attr->verify_microcode = true;
12329 demod->my_common_attr->intermediate_freq = 5000;
12330 demod->my_common_attr->current_power_mode = DRX_POWER_DOWN;
12331 demod->my_ext_attr = demod_ext_attr;
12333 demod->i2c = i2c;
12335 result = drxj_open(demod);
12373 kfree(demod);