Lines Matching refs:fmdev

15 void fm_rx_reset_rds_cache(struct fmdev *fmdev)
17 fmdev->rx.rds.flag = FM_RDS_DISABLE;
18 fmdev->rx.rds.last_blk_idx = 0;
19 fmdev->rx.rds.wr_idx = 0;
20 fmdev->rx.rds.rd_idx = 0;
22 if (fmdev->rx.af_mode == FM_RX_RDS_AF_SWITCH_MODE_ON)
23 fmdev->irq_info.mask |= FM_LEV_EVENT;
26 void fm_rx_reset_station_info(struct fmdev *fmdev)
28 fmdev->rx.stat_info.picode = FM_NO_PI_CODE;
29 fmdev->rx.stat_info.afcache_size = 0;
30 fmdev->rx.stat_info.af_list_max = 0;
33 int fm_rx_set_freq(struct fmdev *fmdev, u32 freq)
41 if (freq < fmdev->rx.region.bot_freq || freq > fmdev->rx.region.top_freq) {
49 ret = fmc_send_cmd(fmdev, AUDIO_ENABLE_SET, REG_WR, &payload,
56 ret = fmc_send_cmd(fmdev, HILO_SET, REG_WR, &payload,
62 payload = (freq - fmdev->rx.region.bot_freq) / FM_FREQ_MUL;
64 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_WR, &payload,
70 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2, NULL, NULL);
75 intr_flag = fmdev->irq_info.mask;
76 fmdev->irq_info.mask = (FM_FR_EVENT | FM_BL_EVENT);
77 payload = fmdev->irq_info.mask;
78 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
85 ret = fmc_send_cmd(fmdev, TUNER_MODE_SET, REG_WR, &payload,
91 init_completion(&fmdev->maintask_comp);
92 timeleft = wait_for_completion_timeout(&fmdev->maintask_comp,
102 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, 2, &curr_frq, &resp_len);
107 curr_frq_in_khz = (fmdev->rx.region.bot_freq + ((u32)curr_frq * FM_FREQ_MUL));
115 fmdev->rx.freq = curr_frq_in_khz;
118 fmdev->irq_info.mask = intr_flag;
119 payload = fmdev->irq_info.mask;
120 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
126 fm_rx_reset_rds_cache(fmdev);
127 fm_rx_reset_station_info(fmdev);
132 static int fm_rx_set_channel_spacing(struct fmdev *fmdev, u32 spacing)
146 ret = fmc_send_cmd(fmdev, CHANL_BW_SET, REG_WR, &payload,
151 fmdev->rx.region.chanl_space = spacing * FM_FREQ_MUL;
156 int fm_rx_seek(struct fmdev *fmdev, u32 seek_upward,
167 ret = fm_rx_set_channel_spacing(fmdev, spacing);
174 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL,
180 last_frq = (fmdev->rx.region.top_freq - fmdev->rx.region.bot_freq) / FM_FREQ_MUL;
183 space_idx = fmdev->rx.region.chanl_space / FM_FREQ_MUL;
201 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_WR, &payload,
208 ret = fmc_send_cmd(fmdev, SEARCH_DIR_SET, REG_WR, &payload,
214 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2, NULL, NULL);
219 intr_flag = fmdev->irq_info.mask;
220 fmdev->irq_info.mask = (FM_FR_EVENT | FM_BL_EVENT);
221 payload = fmdev->irq_info.mask;
222 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
229 ret = fmc_send_cmd(fmdev, TUNER_MODE_SET, REG_WR, &payload,
235 init_completion(&fmdev->maintask_comp);
236 timeleft = wait_for_completion_timeout(&fmdev->maintask_comp,
244 int_reason = fmdev->irq_info.flag & (FM_TUNE_COMPLETE | FM_BAND_LIMIT);
247 fmdev->irq_info.mask = intr_flag;
248 payload = fmdev->irq_info.mask;
249 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
256 fmdev->rx.freq = seek_upward ?
257 fmdev->rx.region.top_freq :
258 fmdev->rx.region.bot_freq;
260 fmdev->rx.freq = seek_upward ?
261 fmdev->rx.region.bot_freq :
262 fmdev->rx.region.top_freq;
264 next_frq = (fmdev->rx.freq -
265 fmdev->rx.region.bot_freq) / FM_FREQ_MUL;
270 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, 2,
276 fmdev->rx.freq = (fmdev->rx.region.bot_freq +
281 fm_rx_reset_rds_cache(fmdev);
282 fm_rx_reset_station_info(fmdev);
287 int fm_rx_set_volume(struct fmdev *fmdev, u16 vol_to_set)
292 if (fmdev->curr_fmmode != FM_MODE_RX)
303 ret = fmc_send_cmd(fmdev, VOLUME_SET, REG_WR, &payload,
308 fmdev->rx.volume = vol_to_set;
313 int fm_rx_get_volume(struct fmdev *fmdev, u16 *curr_vol)
315 if (fmdev->curr_fmmode != FM_MODE_RX)
323 *curr_vol = fmdev->rx.volume / FM_RX_VOLUME_GAIN_STEP;
329 int fm_rx_get_band_freq_range(struct fmdev *fmdev, u32 *bot_freq, u32 *top_freq)
332 *bot_freq = fmdev->rx.region.bot_freq;
335 *top_freq = fmdev->rx.region.top_freq;
341 void fm_rx_get_region(struct fmdev *fmdev, u8 *region)
343 *region = fmdev->rx.region.fm_band;
347 int fm_rx_set_region(struct fmdev *fmdev, u8 region_to_set)
359 if (fmdev->rx.region.fm_band == region_to_set) {
366 ret = fmc_send_cmd(fmdev, BAND_SET, REG_WR, &payload,
371 fmc_update_region_info(fmdev, region_to_set);
374 if (fmdev->rx.freq < fmdev->rx.region.bot_freq)
375 new_frq = fmdev->rx.region.bot_freq;
376 else if (fmdev->rx.freq > fmdev->rx.region.top_freq)
377 new_frq = fmdev->rx.region.top_freq;
383 ret = fm_rx_set_freq(fmdev, new_frq);
390 int fm_rx_get_mute_mode(struct fmdev *fmdev, u8 *curr_mute_mode)
392 if (fmdev->curr_fmmode != FM_MODE_RX)
400 *curr_mute_mode = fmdev->rx.mute_mode;
405 static int fm_config_rx_mute_reg(struct fmdev *fmdev)
411 switch (fmdev->rx.mute_mode) {
424 if (fmdev->rx.rf_depend_mute == FM_RX_RF_DEPENDENT_MUTE_ON)
430 ret = fmc_send_cmd(fmdev, MUTE_STATUS_SET, REG_WR, &payload,
439 int fm_rx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset)
444 if (fmdev->rx.mute_mode == mute_mode_toset)
447 org_state = fmdev->rx.mute_mode;
448 fmdev->rx.mute_mode = mute_mode_toset;
450 ret = fm_config_rx_mute_reg(fmdev);
452 fmdev->rx.mute_mode = org_state;
460 int fm_rx_get_rfdepend_softmute(struct fmdev *fmdev, u8 *curr_mute_mode)
462 if (fmdev->curr_fmmode != FM_MODE_RX)
470 *curr_mute_mode = fmdev->rx.rf_depend_mute;
476 int fm_rx_set_rfdepend_softmute(struct fmdev *fmdev, u8 rfdepend_mute)
481 if (fmdev->curr_fmmode != FM_MODE_RX)
489 if (fmdev->rx.rf_depend_mute == rfdepend_mute)
492 org_state = fmdev->rx.rf_depend_mute;
493 fmdev->rx.rf_depend_mute = rfdepend_mute;
495 ret = fm_config_rx_mute_reg(fmdev);
497 fmdev->rx.rf_depend_mute = org_state;
505 int fm_rx_get_rssi_level(struct fmdev *fmdev, u16 *rssilvl)
516 ret = fmc_send_cmd(fmdev, RSSI_LVL_GET, REG_RD, NULL, 2,
530 int fm_rx_set_rssi_threshold(struct fmdev *fmdev, short rssi_lvl_toset)
541 ret = fmc_send_cmd(fmdev, SEARCH_LVL_SET, REG_WR, &payload,
546 fmdev->rx.rssi_threshold = rssi_lvl_toset;
552 int fm_rx_get_rssi_threshold(struct fmdev *fmdev, short *curr_rssi_lvl)
554 if (fmdev->curr_fmmode != FM_MODE_RX)
562 *curr_rssi_lvl = fmdev->rx.rssi_threshold;
568 int fm_rx_set_stereo_mono(struct fmdev *fmdev, u16 mode)
580 ret = fmc_send_cmd(fmdev, MOST_MODE_SET, REG_WR, &payload,
587 ret = fmc_send_cmd(fmdev, MOST_BLEND_SET, REG_WR, &payload,
596 int fm_rx_get_stereo_mono(struct fmdev *fmdev, u16 *mode)
607 ret = fmc_send_cmd(fmdev, MOST_MODE_SET, REG_RD, NULL, 2,
618 int fm_rx_set_deemphasis_mode(struct fmdev *fmdev, u16 mode)
623 if (fmdev->curr_fmmode != FM_MODE_RX)
633 ret = fmc_send_cmd(fmdev, DEMPH_MODE_SET, REG_WR, &payload,
638 fmdev->rx.deemphasis_mode = mode;
644 int fm_rx_get_deemph_mode(struct fmdev *fmdev, u16 *curr_deemphasis_mode)
646 if (fmdev->curr_fmmode != FM_MODE_RX)
654 *curr_deemphasis_mode = fmdev->rx.deemphasis_mode;
660 int fm_rx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis)
671 && fmdev->rx.rds.flag == FM_RDS_DISABLE) {
674 ret = fmc_send_cmd(fmdev, POWER_SET, REG_WR, &payload,
681 ret = fmc_send_cmd(fmdev, RDS_CNTRL_SET, REG_WR, &payload,
687 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2,
694 ret = fmc_send_cmd(fmdev, RDS_MEM_SET, REG_WR, &payload,
700 fmdev->irq_info.mask |= FM_RDS_EVENT;
701 payload = fmdev->irq_info.mask;
702 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
705 fmdev->irq_info.mask &= ~FM_RDS_EVENT;
710 fmdev->rx.rds.flag = FM_RDS_ENABLE;
712 && fmdev->rx.rds.flag == FM_RDS_ENABLE) {
715 ret = fmc_send_cmd(fmdev, POWER_SET, REG_WR, &payload,
721 fmdev->rx.rds.last_blk_idx = 0;
722 fmdev->rx.rds.wr_idx = 0;
723 fmdev->rx.rds.rd_idx = 0;
724 fm_rx_reset_station_info(fmdev);
727 fmdev->irq_info.mask &= ~(FM_RDS_EVENT);
728 fmdev->rx.rds.flag = FM_RDS_DISABLE;
735 int fm_rx_get_rds_mode(struct fmdev *fmdev, u8 *curr_rds_en_dis)
737 if (fmdev->curr_fmmode != FM_MODE_RX)
745 *curr_rds_en_dis = fmdev->rx.rds.flag;
751 int fm_rx_set_rds_system(struct fmdev *fmdev, u8 rds_mode)
756 if (fmdev->curr_fmmode != FM_MODE_RX)
765 ret = fmc_send_cmd(fmdev, RDS_SYSTEM_SET, REG_WR, &payload,
770 fmdev->rx.rds_mode = rds_mode;
776 int fm_rx_set_af_switch(struct fmdev *fmdev, u8 af_mode)
781 if (fmdev->curr_fmmode != FM_MODE_RX)
791 fmdev->irq_info.mask |= FM_LEV_EVENT;
793 fmdev->irq_info.mask &= ~FM_LEV_EVENT;
795 payload = fmdev->irq_info.mask;
796 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload,
801 fmdev->rx.af_mode = af_mode;
807 int fm_rx_get_af_switch(struct fmdev *fmdev, u8 *af_mode)
809 if (fmdev->curr_fmmode != FM_MODE_RX)
817 *af_mode = fmdev->rx.af_mode;