Searched refs:fmdev (Results 1 - 9 of 9) sorted by relevance

/linux-4.1.27/drivers/media/radio/wl128x/
H A Dfmdrv_rx.h25 int fm_rx_set_freq(struct fmdev *, u32);
26 int fm_rx_set_mute_mode(struct fmdev *, u8);
27 int fm_rx_set_stereo_mono(struct fmdev *, u16);
28 int fm_rx_set_rds_mode(struct fmdev *, u8);
29 int fm_rx_set_rds_system(struct fmdev *, u8);
30 int fm_rx_set_volume(struct fmdev *, u16);
31 int fm_rx_set_rssi_threshold(struct fmdev *, short);
32 int fm_rx_set_region(struct fmdev *, u8);
33 int fm_rx_set_rfdepend_softmute(struct fmdev *, u8);
34 int fm_rx_set_deemphasis_mode(struct fmdev *, u16);
35 int fm_rx_set_af_switch(struct fmdev *, u8);
37 void fm_rx_reset_rds_cache(struct fmdev *);
38 void fm_rx_reset_station_info(struct fmdev *);
40 int fm_rx_seek(struct fmdev *, u32, u32, u32);
42 int fm_rx_get_rds_mode(struct fmdev *, u8 *);
43 int fm_rx_get_mute_mode(struct fmdev *, u8 *);
44 int fm_rx_get_volume(struct fmdev *, u16 *);
45 int fm_rx_get_band_freq_range(struct fmdev *,
47 int fm_rx_get_stereo_mono(struct fmdev *, u16 *);
48 int fm_rx_get_rssi_level(struct fmdev *, u16 *);
49 int fm_rx_get_rssi_threshold(struct fmdev *, short *);
50 int fm_rx_get_rfdepend_softmute(struct fmdev *, u8 *);
51 int fm_rx_get_deemph_mode(struct fmdev *, u16 *);
52 int fm_rx_get_af_switch(struct fmdev *, u8 *);
53 void fm_rx_get_region(struct fmdev *, u8 *);
55 int fm_rx_set_chanl_spacing(struct fmdev *, u8);
56 int fm_rx_get_chanl_spacing(struct fmdev *, u8 *);
H A Dfmdrv_common.c79 static void fm_irq_send_flag_getcmd(struct fmdev *);
80 static void fm_irq_handle_flag_getcmd_resp(struct fmdev *);
81 static void fm_irq_handle_hw_malfunction(struct fmdev *);
82 static void fm_irq_handle_rds_start(struct fmdev *);
83 static void fm_irq_send_rdsdata_getcmd(struct fmdev *);
84 static void fm_irq_handle_rdsdata_getcmd_resp(struct fmdev *);
85 static void fm_irq_handle_rds_finish(struct fmdev *);
86 static void fm_irq_handle_tune_op_ended(struct fmdev *);
87 static void fm_irq_handle_power_enb(struct fmdev *);
88 static void fm_irq_handle_low_rssi_start(struct fmdev *);
89 static void fm_irq_afjump_set_pi(struct fmdev *);
90 static void fm_irq_handle_set_pi_resp(struct fmdev *);
91 static void fm_irq_afjump_set_pimask(struct fmdev *);
92 static void fm_irq_handle_set_pimask_resp(struct fmdev *);
93 static void fm_irq_afjump_setfreq(struct fmdev *);
94 static void fm_irq_handle_setfreq_resp(struct fmdev *);
95 static void fm_irq_afjump_enableint(struct fmdev *);
96 static void fm_irq_afjump_enableint_resp(struct fmdev *);
97 static void fm_irq_start_afjump(struct fmdev *);
98 static void fm_irq_handle_start_afjump_resp(struct fmdev *);
99 static void fm_irq_afjump_rd_freq(struct fmdev *);
100 static void fm_irq_afjump_rd_freq_resp(struct fmdev *);
101 static void fm_irq_handle_low_rssi_finish(struct fmdev *);
102 static void fm_irq_send_intmsk_cmd(struct fmdev *);
103 static void fm_irq_handle_intmsk_cmd_resp(struct fmdev *);
181 static inline void fm_irq_call(struct fmdev *fmdev) fm_irq_call() argument
183 fmdev->irq_info.handlers[fmdev->irq_info.stage](fmdev); fm_irq_call()
187 static inline void fm_irq_call_stage(struct fmdev *fmdev, u8 stage) fm_irq_call_stage() argument
189 fmdev->irq_info.stage = stage; fm_irq_call_stage()
190 fm_irq_call(fmdev); fm_irq_call_stage()
193 static inline void fm_irq_timeout_stage(struct fmdev *fmdev, u8 stage) fm_irq_timeout_stage() argument
195 fmdev->irq_info.stage = stage; fm_irq_timeout_stage()
196 mod_timer(&fmdev->irq_info.timer, jiffies + FM_DRV_TX_TIMEOUT); fm_irq_timeout_stage()
251 void fmc_update_region_info(struct fmdev *fmdev, u8 region_to_set) fmc_update_region_info() argument
253 fmdev->rx.region = region_configs[region_to_set]; fmc_update_region_info()
262 struct fmdev *fmdev; recv_tasklet() local
269 fmdev = (struct fmdev *)arg; recv_tasklet()
270 irq_info = &fmdev->irq_info; recv_tasklet()
272 while ((skb = skb_dequeue(&fmdev->rx_q))) { recv_tasklet()
287 if (!test_bit(FM_INTTASK_RUNNING, &fmdev->flag)) { recv_tasklet()
288 set_bit(FM_INTTASK_RUNNING, &fmdev->flag); recv_tasklet()
298 irq_info->handlers[irq_info->stage](fmdev); recv_tasklet()
300 set_bit(FM_INTTASK_SCHEDULE_PENDING, &fmdev->flag); recv_tasklet()
305 else if (evt_hdr->op == fmdev->pre_op && fmdev->resp_comp != NULL) { recv_tasklet()
307 spin_lock_irqsave(&fmdev->resp_skb_lock, flags); recv_tasklet()
308 fmdev->resp_skb = skb; recv_tasklet()
309 spin_unlock_irqrestore(&fmdev->resp_skb_lock, flags); recv_tasklet()
310 complete(fmdev->resp_comp); recv_tasklet()
312 fmdev->resp_comp = NULL; recv_tasklet()
313 atomic_set(&fmdev->tx_cnt, 1); recv_tasklet()
316 else if (evt_hdr->op == fmdev->pre_op && fmdev->resp_comp == NULL) { recv_tasklet()
317 if (fmdev->resp_skb != NULL) recv_tasklet()
320 spin_lock_irqsave(&fmdev->resp_skb_lock, flags); recv_tasklet()
321 fmdev->resp_skb = skb; recv_tasklet()
322 spin_unlock_irqrestore(&fmdev->resp_skb_lock, flags); recv_tasklet()
325 irq_info->handlers[irq_info->stage](fmdev); recv_tasklet()
328 atomic_set(&fmdev->tx_cnt, 1); recv_tasklet()
337 if (num_fm_hci_cmds && atomic_read(&fmdev->tx_cnt)) recv_tasklet()
338 if (!skb_queue_empty(&fmdev->tx_q)) recv_tasklet()
339 tasklet_schedule(&fmdev->tx_task); recv_tasklet()
346 struct fmdev *fmdev; send_tasklet() local
350 fmdev = (struct fmdev *)arg; send_tasklet()
352 if (!atomic_read(&fmdev->tx_cnt)) send_tasklet()
356 if ((jiffies - fmdev->last_tx_jiffies) > FM_DRV_TX_TIMEOUT) { send_tasklet()
358 atomic_set(&fmdev->tx_cnt, 1); send_tasklet()
362 skb = skb_dequeue(&fmdev->tx_q); send_tasklet()
366 atomic_dec(&fmdev->tx_cnt); send_tasklet()
367 fmdev->pre_op = fm_cb(skb)->fm_op; send_tasklet()
369 if (fmdev->resp_comp != NULL) send_tasklet()
372 fmdev->resp_comp = fm_cb(skb)->completion; send_tasklet()
378 fmdev->resp_comp = NULL; send_tasklet()
380 atomic_set(&fmdev->tx_cnt, 1); send_tasklet()
382 fmdev->last_tx_jiffies = jiffies; send_tasklet()
390 static int fm_send_cmd(struct fmdev *fmdev, u8 fm_op, u16 type, void *payload, fm_send_cmd() argument
401 if (test_bit(FM_FW_DW_INPROGRESS, &fmdev->flag) && payload == NULL) { fm_send_cmd()
405 if (!test_bit(FM_FW_DW_INPROGRESS, &fmdev->flag)) fm_send_cmd()
420 if (!test_bit(FM_FW_DW_INPROGRESS, &fmdev->flag) || fm_send_cmd()
421 test_bit(FM_INTTASK_RUNNING, &fmdev->flag)) { fm_send_cmd()
452 skb_queue_tail(&fmdev->tx_q, skb); fm_send_cmd()
453 tasklet_schedule(&fmdev->tx_task); fm_send_cmd()
459 int fmc_send_cmd(struct fmdev *fmdev, u8 fm_op, u16 type, void *payload, fmc_send_cmd() argument
467 init_completion(&fmdev->maintask_comp); fmc_send_cmd()
468 ret = fm_send_cmd(fmdev, fm_op, type, payload, payload_len, fmc_send_cmd()
469 &fmdev->maintask_comp); fmc_send_cmd()
473 if (!wait_for_completion_timeout(&fmdev->maintask_comp, fmc_send_cmd()
480 if (!fmdev->resp_skb) { fmc_send_cmd()
484 spin_lock_irqsave(&fmdev->resp_skb_lock, flags); fmc_send_cmd()
485 skb = fmdev->resp_skb; fmc_send_cmd()
486 fmdev->resp_skb = NULL; fmc_send_cmd()
487 spin_unlock_irqrestore(&fmdev->resp_skb_lock, flags); fmc_send_cmd()
511 static inline int check_cmdresp_status(struct fmdev *fmdev, check_cmdresp_status() argument
517 del_timer(&fmdev->irq_info.timer); check_cmdresp_status()
519 spin_lock_irqsave(&fmdev->resp_skb_lock, flags); check_cmdresp_status()
520 *skb = fmdev->resp_skb; check_cmdresp_status()
521 fmdev->resp_skb = NULL; check_cmdresp_status()
522 spin_unlock_irqrestore(&fmdev->resp_skb_lock, flags); check_cmdresp_status()
530 mod_timer(&fmdev->irq_info.timer, jiffies + FM_DRV_TX_TIMEOUT); check_cmdresp_status()
537 static inline void fm_irq_common_cmd_resp_helper(struct fmdev *fmdev, u8 stage) fm_irq_common_cmd_resp_helper() argument
541 if (!check_cmdresp_status(fmdev, &skb)) fm_irq_common_cmd_resp_helper()
542 fm_irq_call_stage(fmdev, stage); fm_irq_common_cmd_resp_helper()
554 struct fmdev *fmdev; int_timeout_handler() local
558 fmdev = (struct fmdev *)data; int_timeout_handler()
559 fmirq = &fmdev->irq_info; int_timeout_handler()
571 fm_irq_call_stage(fmdev, FM_SEND_INTMSK_CMD_IDX); int_timeout_handler()
575 static void fm_irq_send_flag_getcmd(struct fmdev *fmdev) fm_irq_send_flag_getcmd() argument
580 if (!fm_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, sizeof(flag), NULL)) fm_irq_send_flag_getcmd()
581 fm_irq_timeout_stage(fmdev, FM_HANDLE_FLAG_GETCMD_RESP_IDX); fm_irq_send_flag_getcmd()
584 static void fm_irq_handle_flag_getcmd_resp(struct fmdev *fmdev) fm_irq_handle_flag_getcmd_resp() argument
589 if (check_cmdresp_status(fmdev, &skb)) fm_irq_handle_flag_getcmd_resp()
596 memcpy(&fmdev->irq_info.flag, skb->data, fm_evt_hdr->dlen); fm_irq_handle_flag_getcmd_resp()
598 fmdev->irq_info.flag = be16_to_cpu((__force __be16)fmdev->irq_info.flag); fm_irq_handle_flag_getcmd_resp()
599 fmdbg("irq: flag register(0x%x)\n", fmdev->irq_info.flag); fm_irq_handle_flag_getcmd_resp()
602 fm_irq_call_stage(fmdev, FM_HW_MAL_FUNC_IDX); fm_irq_handle_flag_getcmd_resp()
605 static void fm_irq_handle_hw_malfunction(struct fmdev *fmdev) fm_irq_handle_hw_malfunction() argument
607 if (fmdev->irq_info.flag & FM_MAL_EVENT & fmdev->irq_info.mask) fm_irq_handle_hw_malfunction()
611 fm_irq_call_stage(fmdev, FM_RDS_START_IDX); fm_irq_handle_hw_malfunction()
614 static void fm_irq_handle_rds_start(struct fmdev *fmdev) fm_irq_handle_rds_start() argument
616 if (fmdev->irq_info.flag & FM_RDS_EVENT & fmdev->irq_info.mask) { fm_irq_handle_rds_start()
618 fmdev->irq_info.stage = FM_RDS_SEND_RDS_GETCMD_IDX; fm_irq_handle_rds_start()
621 fmdev->irq_info.stage = FM_HW_TUNE_OP_ENDED_IDX; fm_irq_handle_rds_start()
624 fm_irq_call(fmdev); fm_irq_handle_rds_start()
627 static void fm_irq_send_rdsdata_getcmd(struct fmdev *fmdev) fm_irq_send_rdsdata_getcmd() argument
630 if (!fm_send_cmd(fmdev, RDS_DATA_GET, REG_RD, NULL, fm_irq_send_rdsdata_getcmd()
632 fm_irq_timeout_stage(fmdev, FM_RDS_HANDLE_RDS_GETCMD_RESP_IDX); fm_irq_send_rdsdata_getcmd()
636 static void fm_rx_update_af_cache(struct fmdev *fmdev, u8 af) fm_rx_update_af_cache() argument
638 struct tuned_station_info *stat_info = &fmdev->rx.stat_info; fm_rx_update_af_cache()
639 u8 reg_idx = fmdev->rx.region.fm_band; fm_rx_update_af_cache()
645 fmdev->rx.stat_info.af_list_max = (af - FM_RDS_1_AF_FOLLOWS + 1); fm_rx_update_af_cache()
646 fmdev->rx.stat_info.afcache_size = 0; fm_rx_update_af_cache()
647 fmdbg("No of expected AF : %d\n", fmdev->rx.stat_info.af_list_max); fm_rx_update_af_cache()
658 freq = fmdev->rx.region.bot_freq + (af * 100); fm_rx_update_af_cache()
659 if (freq == fmdev->rx.freq) { fm_rx_update_af_cache()
661 fmdev->rx.freq, freq); fm_rx_update_af_cache()
689 static void fm_rdsparse_swapbytes(struct fmdev *fmdev, fm_rdsparse_swapbytes() argument
701 if (fmdev->asci_id != 0x6350) { fm_rdsparse_swapbytes()
712 static void fm_irq_handle_rdsdata_getcmd_resp(struct fmdev *fmdev) fm_irq_handle_rdsdata_getcmd_resp() argument
716 struct fm_rds *rds = &fmdev->rx.rds; fm_irq_handle_rdsdata_getcmd_resp()
723 if (check_cmdresp_status(fmdev, &skb)) fm_irq_handle_rdsdata_getcmd_resp()
761 fm_rdsparse_swapbytes(fmdev, &rds_fmt); fm_irq_handle_rdsdata_getcmd_resp()
768 if (fmdev->rx.stat_info.picode != cur_picode) fm_irq_handle_rdsdata_getcmd_resp()
769 fmdev->rx.stat_info.picode = cur_picode; fm_irq_handle_rdsdata_getcmd_resp()
779 fm_rx_update_af_cache(fmdev, rds_fmt.data.group0A.af[0]); fm_irq_handle_rdsdata_getcmd_resp()
780 fm_rx_update_af_cache(fmdev, rds_fmt.data.group0A.af[1]); fm_irq_handle_rdsdata_getcmd_resp()
791 spin_lock_irqsave(&fmdev->rds_buff_lock, flags); fm_irq_handle_rdsdata_getcmd_resp()
819 spin_unlock_irqrestore(&fmdev->rds_buff_lock, flags); fm_irq_handle_rdsdata_getcmd_resp()
825 fm_irq_call_stage(fmdev, FM_RDS_FINISH_IDX); fm_irq_handle_rdsdata_getcmd_resp()
828 static void fm_irq_handle_rds_finish(struct fmdev *fmdev) fm_irq_handle_rds_finish() argument
830 fm_irq_call_stage(fmdev, FM_HW_TUNE_OP_ENDED_IDX); fm_irq_handle_rds_finish()
833 static void fm_irq_handle_tune_op_ended(struct fmdev *fmdev) fm_irq_handle_tune_op_ended() argument
835 if (fmdev->irq_info.flag & (FM_FR_EVENT | FM_BL_EVENT) & fmdev-> fm_irq_handle_tune_op_ended()
838 if (test_and_clear_bit(FM_AF_SWITCH_INPROGRESS, &fmdev->flag)) { fm_irq_handle_tune_op_ended()
839 fmdev->irq_info.stage = FM_AF_JUMP_RD_FREQ_IDX; fm_irq_handle_tune_op_ended()
841 complete(&fmdev->maintask_comp); fm_irq_handle_tune_op_ended()
842 fmdev->irq_info.stage = FM_HW_POWER_ENB_IDX; fm_irq_handle_tune_op_ended()
845 fmdev->irq_info.stage = FM_HW_POWER_ENB_IDX; fm_irq_handle_tune_op_ended()
847 fm_irq_call(fmdev); fm_irq_handle_tune_op_ended()
850 static void fm_irq_handle_power_enb(struct fmdev *fmdev) fm_irq_handle_power_enb() argument
852 if (fmdev->irq_info.flag & FM_POW_ENB_EVENT) { fm_irq_handle_power_enb()
854 complete(&fmdev->maintask_comp); fm_irq_handle_power_enb()
857 fm_irq_call_stage(fmdev, FM_LOW_RSSI_START_IDX); fm_irq_handle_power_enb()
860 static void fm_irq_handle_low_rssi_start(struct fmdev *fmdev) fm_irq_handle_low_rssi_start() argument
862 if ((fmdev->rx.af_mode == FM_RX_RDS_AF_SWITCH_MODE_ON) && fm_irq_handle_low_rssi_start()
863 (fmdev->irq_info.flag & FM_LEV_EVENT & fmdev->irq_info.mask) && fm_irq_handle_low_rssi_start()
864 (fmdev->rx.freq != FM_UNDEFINED_FREQ) && fm_irq_handle_low_rssi_start()
865 (fmdev->rx.stat_info.afcache_size != 0)) { fm_irq_handle_low_rssi_start()
869 fmdev->irq_info.mask &= ~FM_LEV_EVENT; fm_irq_handle_low_rssi_start()
871 fmdev->rx.afjump_idx = 0; fm_irq_handle_low_rssi_start()
872 fmdev->rx.freq_before_jump = fmdev->rx.freq; fm_irq_handle_low_rssi_start()
873 fmdev->irq_info.stage = FM_AF_JUMP_SETPI_IDX; fm_irq_handle_low_rssi_start()
876 fmdev->irq_info.stage = FM_SEND_INTMSK_CMD_IDX; fm_irq_handle_low_rssi_start()
879 fm_irq_call(fmdev); fm_irq_handle_low_rssi_start()
882 static void fm_irq_afjump_set_pi(struct fmdev *fmdev) fm_irq_afjump_set_pi() argument
887 payload = fmdev->rx.stat_info.picode; fm_irq_afjump_set_pi()
888 if (!fm_send_cmd(fmdev, RDS_PI_SET, REG_WR, &payload, sizeof(payload), NULL)) fm_irq_afjump_set_pi()
889 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_HANDLE_SETPI_RESP_IDX); fm_irq_afjump_set_pi()
892 static void fm_irq_handle_set_pi_resp(struct fmdev *fmdev) fm_irq_handle_set_pi_resp() argument
894 fm_irq_common_cmd_resp_helper(fmdev, FM_AF_JUMP_SETPI_MASK_IDX); fm_irq_handle_set_pi_resp()
902 static void fm_irq_afjump_set_pimask(struct fmdev *fmdev) fm_irq_afjump_set_pimask() argument
907 if (!fm_send_cmd(fmdev, RDS_PI_MASK_SET, REG_WR, &payload, sizeof(payload), NULL)) fm_irq_afjump_set_pimask()
908 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_HANDLE_SETPI_MASK_RESP_IDX); fm_irq_afjump_set_pimask()
911 static void fm_irq_handle_set_pimask_resp(struct fmdev *fmdev) fm_irq_handle_set_pimask_resp() argument
913 fm_irq_common_cmd_resp_helper(fmdev, FM_AF_JUMP_SET_AF_FREQ_IDX); fm_irq_handle_set_pimask_resp()
916 static void fm_irq_afjump_setfreq(struct fmdev *fmdev) fm_irq_afjump_setfreq() argument
921 fmdbg("Swtich to %d KHz\n", fmdev->rx.stat_info.af_cache[fmdev->rx.afjump_idx]); fm_irq_afjump_setfreq()
922 frq_index = (fmdev->rx.stat_info.af_cache[fmdev->rx.afjump_idx] - fm_irq_afjump_setfreq()
923 fmdev->rx.region.bot_freq) / FM_FREQ_MUL; fm_irq_afjump_setfreq()
926 if (!fm_send_cmd(fmdev, AF_FREQ_SET, REG_WR, &payload, sizeof(payload), NULL)) fm_irq_afjump_setfreq()
927 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_HANDLE_SET_AFFREQ_RESP_IDX); fm_irq_afjump_setfreq()
930 static void fm_irq_handle_setfreq_resp(struct fmdev *fmdev) fm_irq_handle_setfreq_resp() argument
932 fm_irq_common_cmd_resp_helper(fmdev, FM_AF_JUMP_ENABLE_INT_IDX); fm_irq_handle_setfreq_resp()
935 static void fm_irq_afjump_enableint(struct fmdev *fmdev) fm_irq_afjump_enableint() argument
941 if (!fm_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, sizeof(payload), NULL)) fm_irq_afjump_enableint()
942 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_ENABLE_INT_RESP_IDX); fm_irq_afjump_enableint()
945 static void fm_irq_afjump_enableint_resp(struct fmdev *fmdev) fm_irq_afjump_enableint_resp() argument
947 fm_irq_common_cmd_resp_helper(fmdev, FM_AF_JUMP_START_AFJUMP_IDX); fm_irq_afjump_enableint_resp()
950 static void fm_irq_start_afjump(struct fmdev *fmdev) fm_irq_start_afjump() argument
955 if (!fm_send_cmd(fmdev, TUNER_MODE_SET, REG_WR, &payload, fm_irq_start_afjump()
957 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_HANDLE_START_AFJUMP_RESP_IDX); fm_irq_start_afjump()
960 static void fm_irq_handle_start_afjump_resp(struct fmdev *fmdev) fm_irq_handle_start_afjump_resp() argument
964 if (check_cmdresp_status(fmdev, &skb)) fm_irq_handle_start_afjump_resp()
967 fmdev->irq_info.stage = FM_SEND_FLAG_GETCMD_IDX; fm_irq_handle_start_afjump_resp()
968 set_bit(FM_AF_SWITCH_INPROGRESS, &fmdev->flag); fm_irq_handle_start_afjump_resp()
969 clear_bit(FM_INTTASK_RUNNING, &fmdev->flag); fm_irq_handle_start_afjump_resp()
972 static void fm_irq_afjump_rd_freq(struct fmdev *fmdev) fm_irq_afjump_rd_freq() argument
976 if (!fm_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, sizeof(payload), NULL)) fm_irq_afjump_rd_freq()
977 fm_irq_timeout_stage(fmdev, FM_AF_JUMP_RD_FREQ_RESP_IDX); fm_irq_afjump_rd_freq()
980 static void fm_irq_afjump_rd_freq_resp(struct fmdev *fmdev) fm_irq_afjump_rd_freq_resp() argument
986 if (check_cmdresp_status(fmdev, &skb)) fm_irq_afjump_rd_freq_resp()
993 curr_freq = fmdev->rx.region.bot_freq + ((u32)read_freq * FM_FREQ_MUL); fm_irq_afjump_rd_freq_resp()
995 jumped_freq = fmdev->rx.stat_info.af_cache[fmdev->rx.afjump_idx]; fm_irq_afjump_rd_freq_resp()
998 if ((curr_freq != fmdev->rx.freq_before_jump) && (curr_freq == jumped_freq)) { fm_irq_afjump_rd_freq_resp()
1000 fmdev->rx.freq = curr_freq; fm_irq_afjump_rd_freq_resp()
1001 fm_rx_reset_rds_cache(fmdev); fm_irq_afjump_rd_freq_resp()
1004 if (fmdev->rx.af_mode == FM_RX_RDS_AF_SWITCH_MODE_ON) fm_irq_afjump_rd_freq_resp()
1005 fmdev->irq_info.mask |= FM_LEV_EVENT; fm_irq_afjump_rd_freq_resp()
1007 fmdev->irq_info.stage = FM_LOW_RSSI_FINISH_IDX; fm_irq_afjump_rd_freq_resp()
1009 fmdev->rx.afjump_idx++; fm_irq_afjump_rd_freq_resp()
1012 if (fmdev->rx.afjump_idx >= fmdev->rx.stat_info.afcache_size) { fm_irq_afjump_rd_freq_resp()
1014 fmdev->irq_info.stage = FM_LOW_RSSI_FINISH_IDX; fm_irq_afjump_rd_freq_resp()
1018 fmdev->irq_info.stage = FM_AF_JUMP_SETPI_IDX; fm_irq_afjump_rd_freq_resp()
1021 fm_irq_call(fmdev); fm_irq_afjump_rd_freq_resp()
1024 static void fm_irq_handle_low_rssi_finish(struct fmdev *fmdev) fm_irq_handle_low_rssi_finish() argument
1026 fm_irq_call_stage(fmdev, FM_SEND_INTMSK_CMD_IDX); fm_irq_handle_low_rssi_finish()
1029 static void fm_irq_send_intmsk_cmd(struct fmdev *fmdev) fm_irq_send_intmsk_cmd() argument
1034 payload = fmdev->irq_info.mask; fm_irq_send_intmsk_cmd()
1036 if (!fm_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_irq_send_intmsk_cmd()
1038 fm_irq_timeout_stage(fmdev, FM_HANDLE_INTMSK_CMD_RESP_IDX); fm_irq_send_intmsk_cmd()
1041 static void fm_irq_handle_intmsk_cmd_resp(struct fmdev *fmdev) fm_irq_handle_intmsk_cmd_resp() argument
1045 if (check_cmdresp_status(fmdev, &skb)) fm_irq_handle_intmsk_cmd_resp()
1051 fmdev->irq_info.stage = FM_SEND_FLAG_GETCMD_IDX; fm_irq_handle_intmsk_cmd_resp()
1054 if (test_and_clear_bit(FM_INTTASK_SCHEDULE_PENDING, &fmdev->flag)) fm_irq_handle_intmsk_cmd_resp()
1055 fmdev->irq_info.handlers[fmdev->irq_info.stage](fmdev); fm_irq_handle_intmsk_cmd_resp()
1057 clear_bit(FM_INTTASK_RUNNING, &fmdev->flag); fm_irq_handle_intmsk_cmd_resp()
1061 int fmc_is_rds_data_available(struct fmdev *fmdev, struct file *file, fmc_is_rds_data_available() argument
1064 poll_wait(file, &fmdev->rx.rds.read_queue, pts); fmc_is_rds_data_available()
1065 if (fmdev->rx.rds.rd_idx != fmdev->rx.rds.wr_idx) fmc_is_rds_data_available()
1072 int fmc_transfer_rds_from_internal_buff(struct fmdev *fmdev, struct file *file, fmc_transfer_rds_from_internal_buff() argument
1080 if (fmdev->rx.rds.wr_idx == fmdev->rx.rds.rd_idx) { fmc_transfer_rds_from_internal_buff()
1084 ret = wait_event_interruptible(fmdev->rx.rds.read_queue, fmc_transfer_rds_from_internal_buff()
1085 (fmdev->rx.rds.wr_idx != fmdev->rx.rds.rd_idx)); fmc_transfer_rds_from_internal_buff()
1096 spin_lock_irqsave(&fmdev->rds_buff_lock, flags); fmc_transfer_rds_from_internal_buff()
1098 if (fmdev->rx.rds.wr_idx == fmdev->rx.rds.rd_idx) { fmc_transfer_rds_from_internal_buff()
1099 spin_unlock_irqrestore(&fmdev->rds_buff_lock, flags); fmc_transfer_rds_from_internal_buff()
1102 memcpy(tmpbuf, &fmdev->rx.rds.buff[fmdev->rx.rds.rd_idx], fmc_transfer_rds_from_internal_buff()
1104 fmdev->rx.rds.rd_idx += FM_RDS_BLK_SIZE; fmc_transfer_rds_from_internal_buff()
1105 if (fmdev->rx.rds.rd_idx >= fmdev->rx.rds.buf_size) fmc_transfer_rds_from_internal_buff()
1106 fmdev->rx.rds.rd_idx = 0; fmc_transfer_rds_from_internal_buff()
1108 spin_unlock_irqrestore(&fmdev->rds_buff_lock, flags); fmc_transfer_rds_from_internal_buff()
1120 int fmc_set_freq(struct fmdev *fmdev, u32 freq_to_set) fmc_set_freq() argument
1122 switch (fmdev->curr_fmmode) { fmc_set_freq()
1124 return fm_rx_set_freq(fmdev, freq_to_set); fmc_set_freq()
1127 return fm_tx_set_freq(fmdev, freq_to_set); fmc_set_freq()
1134 int fmc_get_freq(struct fmdev *fmdev, u32 *cur_tuned_frq) fmc_get_freq() argument
1136 if (fmdev->rx.freq == FM_UNDEFINED_FREQ) { fmc_get_freq()
1145 switch (fmdev->curr_fmmode) { fmc_get_freq()
1147 *cur_tuned_frq = fmdev->rx.freq; fmc_get_freq()
1160 int fmc_set_region(struct fmdev *fmdev, u8 region_to_set) fmc_set_region() argument
1162 switch (fmdev->curr_fmmode) { fmc_set_region()
1164 return fm_rx_set_region(fmdev, region_to_set); fmc_set_region()
1167 return fm_tx_set_region(fmdev, region_to_set); fmc_set_region()
1174 int fmc_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset) fmc_set_mute_mode() argument
1176 switch (fmdev->curr_fmmode) { fmc_set_mute_mode()
1178 return fm_rx_set_mute_mode(fmdev, mute_mode_toset); fmc_set_mute_mode()
1181 return fm_tx_set_mute_mode(fmdev, mute_mode_toset); fmc_set_mute_mode()
1188 int fmc_set_stereo_mono(struct fmdev *fmdev, u16 mode) fmc_set_stereo_mono() argument
1190 switch (fmdev->curr_fmmode) { fmc_set_stereo_mono()
1192 return fm_rx_set_stereo_mono(fmdev, mode); fmc_set_stereo_mono()
1195 return fm_tx_set_stereo_mono(fmdev, mode); fmc_set_stereo_mono()
1202 int fmc_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis) fmc_set_rds_mode() argument
1204 switch (fmdev->curr_fmmode) { fmc_set_rds_mode()
1206 return fm_rx_set_rds_mode(fmdev, rds_en_dis); fmc_set_rds_mode()
1209 return fm_tx_set_rds_mode(fmdev, rds_en_dis); fmc_set_rds_mode()
1217 static int fm_power_down(struct fmdev *fmdev) fm_power_down() argument
1222 if (!test_bit(FM_CORE_READY, &fmdev->flag)) { fm_power_down()
1226 if (fmdev->curr_fmmode == FM_MODE_OFF) { fm_power_down()
1232 ret = fmc_send_cmd(fmdev, FM_POWER_MODE, REG_WR, &payload, fm_power_down()
1237 return fmc_release(fmdev); fm_power_down()
1241 static int fm_download_firmware(struct fmdev *fmdev, const u8 *fw_name) fm_download_firmware() argument
1251 set_bit(FM_FW_DW_INPROGRESS, &fmdev->flag); fm_download_firmware()
1254 &fmdev->radio_dev->dev); fm_download_firmware()
1281 if (fmc_send_cmd(fmdev, 0, 0, action->data, fm_download_firmware()
1300 clear_bit(FM_FW_DW_INPROGRESS, &fmdev->flag); fm_download_firmware()
1306 static int load_default_rx_configuration(struct fmdev *fmdev) load_default_rx_configuration() argument
1310 ret = fm_rx_set_volume(fmdev, FM_DEFAULT_RX_VOLUME); load_default_rx_configuration()
1314 return fm_rx_set_rssi_threshold(fmdev, FM_DEFAULT_RSSI_THRESHOLD); load_default_rx_configuration()
1318 static int fm_power_up(struct fmdev *fmdev, u8 mode) fm_power_up() argument
1334 ret = fmc_prepare(fmdev); fm_power_up()
1341 if (fmc_send_cmd(fmdev, FM_POWER_MODE, REG_WR, &payload, fm_power_up()
1348 if (fmc_send_cmd(fmdev, ASIC_ID_GET, REG_RD, NULL, fm_power_up()
1352 if (fmc_send_cmd(fmdev, ASIC_VER_GET, REG_RD, NULL, fm_power_up()
1362 ret = fm_download_firmware(fmdev, fw_name); fm_power_up()
1371 ret = fm_download_firmware(fmdev, fw_name); fm_power_up()
1378 return fmc_release(fmdev); fm_power_up()
1382 int fmc_set_mode(struct fmdev *fmdev, u8 fm_mode) fmc_set_mode() argument
1390 if (fmdev->curr_fmmode == fm_mode) { fmc_set_mode()
1397 ret = fm_power_down(fmdev); fmc_set_mode()
1407 if (fmdev->curr_fmmode != FM_MODE_OFF) { fmc_set_mode()
1408 ret = fm_power_down(fmdev); fmc_set_mode()
1415 ret = fm_power_up(fmdev, fm_mode); fmc_set_mode()
1421 fmdev->curr_fmmode = fm_mode; fmc_set_mode()
1424 if (fmdev->curr_fmmode == FM_MODE_RX) { fmc_set_mode()
1426 ret = load_default_rx_configuration(fmdev); fmc_set_mode()
1435 int fmc_get_mode(struct fmdev *fmdev, u8 *fmmode) fmc_get_mode() argument
1437 if (!test_bit(FM_CORE_READY, &fmdev->flag)) { fmc_get_mode()
1446 *fmmode = fmdev->curr_fmmode; fmc_get_mode()
1453 struct fmdev *fmdev; fm_st_receive() local
1455 fmdev = (struct fmdev *)arg; fm_st_receive()
1468 skb_queue_tail(&fmdev->rx_q, skb); fm_st_receive()
1469 tasklet_schedule(&fmdev->rx_task); fm_st_receive()
1480 struct fmdev *fmdev; fm_st_reg_comp_cb() local
1482 fmdev = (struct fmdev *)arg; fm_st_reg_comp_cb()
1483 fmdev->streg_cbdata = data; fm_st_reg_comp_cb()
1491 int fmc_prepare(struct fmdev *fmdev) fmc_prepare() argument
1496 if (test_bit(FM_CORE_READY, &fmdev->flag)) { fmc_prepare()
1506 fm_st_proto.priv_data = fmdev; fmc_prepare()
1517 fmdev->streg_cbdata = -EINPROGRESS; fmc_prepare()
1527 if (fmdev->streg_cbdata != 0) { fmc_prepare()
1529 "status %d\n", fmdev->streg_cbdata); fmc_prepare()
1549 spin_lock_init(&fmdev->rds_buff_lock); fmc_prepare()
1550 spin_lock_init(&fmdev->resp_skb_lock); fmc_prepare()
1553 skb_queue_head_init(&fmdev->tx_q); fmc_prepare()
1554 tasklet_init(&fmdev->tx_task, send_tasklet, (unsigned long)fmdev); fmc_prepare()
1557 skb_queue_head_init(&fmdev->rx_q); fmc_prepare()
1558 tasklet_init(&fmdev->rx_task, recv_tasklet, (unsigned long)fmdev); fmc_prepare()
1560 fmdev->irq_info.stage = 0; fmc_prepare()
1561 atomic_set(&fmdev->tx_cnt, 1); fmc_prepare()
1562 fmdev->resp_comp = NULL; fmc_prepare()
1564 init_timer(&fmdev->irq_info.timer); fmc_prepare()
1565 fmdev->irq_info.timer.function = &int_timeout_handler; fmc_prepare()
1566 fmdev->irq_info.timer.data = (unsigned long)fmdev; fmc_prepare()
1568 fmdev->irq_info.mask = FM_MAL_EVENT; fmc_prepare()
1571 fmdev->rx.region = region_configs[default_radio_region]; fmc_prepare()
1573 fmdev->rx.mute_mode = FM_MUTE_OFF; fmc_prepare()
1574 fmdev->rx.rf_depend_mute = FM_RX_RF_DEPENDENT_MUTE_OFF; fmc_prepare()
1575 fmdev->rx.rds.flag = FM_RDS_DISABLE; fmc_prepare()
1576 fmdev->rx.freq = FM_UNDEFINED_FREQ; fmc_prepare()
1577 fmdev->rx.rds_mode = FM_RDS_SYSTEM_RDS; fmc_prepare()
1578 fmdev->rx.af_mode = FM_RX_RDS_AF_SWITCH_MODE_OFF; fmc_prepare()
1579 fmdev->irq_info.retry = 0; fmc_prepare()
1581 fm_rx_reset_rds_cache(fmdev); fmc_prepare()
1582 init_waitqueue_head(&fmdev->rx.rds.read_queue); fmc_prepare()
1584 fm_rx_reset_station_info(fmdev); fmc_prepare()
1585 set_bit(FM_CORE_READY, &fmdev->flag); fmc_prepare()
1594 int fmc_release(struct fmdev *fmdev) fmc_release() argument
1599 if (!test_bit(FM_CORE_READY, &fmdev->flag)) { fmc_release()
1604 wake_up_interruptible(&fmdev->rx.rds.read_queue); fmc_release()
1606 tasklet_kill(&fmdev->tx_task); fmc_release()
1607 tasklet_kill(&fmdev->rx_task); fmc_release()
1609 skb_queue_purge(&fmdev->tx_q); fmc_release()
1610 skb_queue_purge(&fmdev->rx_q); fmc_release()
1612 fmdev->resp_comp = NULL; fmc_release()
1613 fmdev->rx.freq = 0; fmc_release()
1625 clear_bit(FM_CORE_READY, &fmdev->flag); fmc_release()
1635 struct fmdev *fmdev = NULL; fm_drv_init() local
1640 fmdev = kzalloc(sizeof(struct fmdev), GFP_KERNEL); fm_drv_init()
1641 if (NULL == fmdev) { fm_drv_init()
1645 fmdev->rx.rds.buf_size = default_rds_buf * FM_RDS_BLK_SIZE; fm_drv_init()
1646 fmdev->rx.rds.buff = kzalloc(fmdev->rx.rds.buf_size, GFP_KERNEL); fm_drv_init()
1647 if (NULL == fmdev->rx.rds.buff) { fm_drv_init()
1652 ret = fm_v4l2_init_video_device(fmdev, radio_nr); fm_drv_init()
1656 fmdev->irq_info.handlers = int_handler_table; fm_drv_init()
1657 fmdev->curr_fmmode = FM_MODE_OFF; fm_drv_init()
1658 fmdev->tx_data.pwr_lvl = FM_PWR_LVL_DEF; fm_drv_init()
1659 fmdev->tx_data.preemph = FM_TX_PREEMPH_50US; fm_drv_init()
1663 kfree(fmdev->rx.rds.buff); fm_drv_init()
1665 kfree(fmdev); fm_drv_init()
1673 struct fmdev *fmdev = NULL; fm_drv_exit() local
1675 fmdev = fm_v4l2_deinit_video_device(); fm_drv_exit()
1676 if (fmdev != NULL) { fm_drv_exit()
1677 kfree(fmdev->rx.rds.buff); fm_drv_exit()
1678 kfree(fmdev); fm_drv_exit()
H A Dfmdrv_rx.c28 void fm_rx_reset_rds_cache(struct fmdev *fmdev) fm_rx_reset_rds_cache() argument
30 fmdev->rx.rds.flag = FM_RDS_DISABLE; fm_rx_reset_rds_cache()
31 fmdev->rx.rds.last_blk_idx = 0; fm_rx_reset_rds_cache()
32 fmdev->rx.rds.wr_idx = 0; fm_rx_reset_rds_cache()
33 fmdev->rx.rds.rd_idx = 0; fm_rx_reset_rds_cache()
35 if (fmdev->rx.af_mode == FM_RX_RDS_AF_SWITCH_MODE_ON) fm_rx_reset_rds_cache()
36 fmdev->irq_info.mask |= FM_LEV_EVENT; fm_rx_reset_rds_cache()
39 void fm_rx_reset_station_info(struct fmdev *fmdev) fm_rx_reset_station_info() argument
41 fmdev->rx.stat_info.picode = FM_NO_PI_CODE; fm_rx_reset_station_info()
42 fmdev->rx.stat_info.afcache_size = 0; fm_rx_reset_station_info()
43 fmdev->rx.stat_info.af_list_max = 0; fm_rx_reset_station_info()
46 int fm_rx_set_freq(struct fmdev *fmdev, u32 freq) fm_rx_set_freq() argument
54 if (freq < fmdev->rx.region.bot_freq || freq > fmdev->rx.region.top_freq) { fm_rx_set_freq()
62 ret = fmc_send_cmd(fmdev, AUDIO_ENABLE_SET, REG_WR, &payload, fm_rx_set_freq()
69 ret = fmc_send_cmd(fmdev, HILO_SET, REG_WR, &payload, fm_rx_set_freq()
75 payload = (freq - fmdev->rx.region.bot_freq) / FM_FREQ_MUL; fm_rx_set_freq()
77 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_WR, &payload, fm_rx_set_freq()
83 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2, NULL, NULL); fm_rx_set_freq()
88 intr_flag = fmdev->irq_info.mask; fm_rx_set_freq()
89 fmdev->irq_info.mask = (FM_FR_EVENT | FM_BL_EVENT); fm_rx_set_freq()
90 payload = fmdev->irq_info.mask; fm_rx_set_freq()
91 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_set_freq()
98 ret = fmc_send_cmd(fmdev, TUNER_MODE_SET, REG_WR, &payload, fm_rx_set_freq()
104 init_completion(&fmdev->maintask_comp); fm_rx_set_freq()
105 timeleft = wait_for_completion_timeout(&fmdev->maintask_comp, fm_rx_set_freq()
115 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, 2, &curr_frq, &resp_len); fm_rx_set_freq()
120 curr_frq_in_khz = (fmdev->rx.region.bot_freq + ((u32)curr_frq * FM_FREQ_MUL)); fm_rx_set_freq()
128 fmdev->rx.freq = curr_frq_in_khz; fm_rx_set_freq()
131 fmdev->irq_info.mask = intr_flag; fm_rx_set_freq()
132 payload = fmdev->irq_info.mask; fm_rx_set_freq()
133 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_set_freq()
139 fm_rx_reset_rds_cache(fmdev); fm_rx_set_freq()
140 fm_rx_reset_station_info(fmdev); fm_rx_set_freq()
145 static int fm_rx_set_channel_spacing(struct fmdev *fmdev, u32 spacing) fm_rx_set_channel_spacing() argument
159 ret = fmc_send_cmd(fmdev, CHANL_BW_SET, REG_WR, &payload, fm_rx_set_channel_spacing()
164 fmdev->rx.region.chanl_space = spacing * FM_FREQ_MUL; fm_rx_set_channel_spacing()
169 int fm_rx_seek(struct fmdev *fmdev, u32 seek_upward, fm_rx_seek() argument
180 ret = fm_rx_set_channel_spacing(fmdev, spacing); fm_rx_seek()
187 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, fm_rx_seek()
193 last_frq = (fmdev->rx.region.top_freq - fmdev->rx.region.bot_freq) / FM_FREQ_MUL; fm_rx_seek()
196 space_idx = fmdev->rx.region.chanl_space / FM_FREQ_MUL; fm_rx_seek()
214 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_WR, &payload, fm_rx_seek()
221 ret = fmc_send_cmd(fmdev, SEARCH_DIR_SET, REG_WR, &payload, fm_rx_seek()
227 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2, NULL, NULL); fm_rx_seek()
232 intr_flag = fmdev->irq_info.mask; fm_rx_seek()
233 fmdev->irq_info.mask = (FM_FR_EVENT | FM_BL_EVENT); fm_rx_seek()
234 payload = fmdev->irq_info.mask; fm_rx_seek()
235 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_seek()
242 ret = fmc_send_cmd(fmdev, TUNER_MODE_SET, REG_WR, &payload, fm_rx_seek()
248 init_completion(&fmdev->maintask_comp); fm_rx_seek()
249 timeleft = wait_for_completion_timeout(&fmdev->maintask_comp, fm_rx_seek()
257 int_reason = fmdev->irq_info.flag & (FM_TUNE_COMPLETE | FM_BAND_LIMIT); fm_rx_seek()
260 fmdev->irq_info.mask = intr_flag; fm_rx_seek()
261 payload = fmdev->irq_info.mask; fm_rx_seek()
262 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_seek()
269 fmdev->rx.freq = seek_upward ? fm_rx_seek()
270 fmdev->rx.region.top_freq : fm_rx_seek()
271 fmdev->rx.region.bot_freq; fm_rx_seek()
273 fmdev->rx.freq = seek_upward ? fm_rx_seek()
274 fmdev->rx.region.bot_freq : fm_rx_seek()
275 fmdev->rx.region.top_freq; fm_rx_seek()
277 next_frq = (fmdev->rx.freq - fm_rx_seek()
278 fmdev->rx.region.bot_freq) / FM_FREQ_MUL; fm_rx_seek()
283 ret = fmc_send_cmd(fmdev, FREQ_SET, REG_RD, NULL, 2, fm_rx_seek()
289 fmdev->rx.freq = (fmdev->rx.region.bot_freq + fm_rx_seek()
294 fm_rx_reset_rds_cache(fmdev); fm_rx_seek()
295 fm_rx_reset_station_info(fmdev); fm_rx_seek()
300 int fm_rx_set_volume(struct fmdev *fmdev, u16 vol_to_set) fm_rx_set_volume() argument
305 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_set_volume()
316 ret = fmc_send_cmd(fmdev, VOLUME_SET, REG_WR, &payload, fm_rx_set_volume()
321 fmdev->rx.volume = vol_to_set; fm_rx_set_volume()
326 int fm_rx_get_volume(struct fmdev *fmdev, u16 *curr_vol) fm_rx_get_volume() argument
328 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_volume()
336 *curr_vol = fmdev->rx.volume / FM_RX_VOLUME_GAIN_STEP; fm_rx_get_volume()
342 int fm_rx_get_band_freq_range(struct fmdev *fmdev, u32 *bot_freq, u32 *top_freq) fm_rx_get_band_freq_range() argument
345 *bot_freq = fmdev->rx.region.bot_freq; fm_rx_get_band_freq_range()
348 *top_freq = fmdev->rx.region.top_freq; fm_rx_get_band_freq_range()
354 void fm_rx_get_region(struct fmdev *fmdev, u8 *region) fm_rx_get_region() argument
356 *region = fmdev->rx.region.fm_band; fm_rx_get_region()
360 int fm_rx_set_region(struct fmdev *fmdev, u8 region_to_set) fm_rx_set_region() argument
372 if (fmdev->rx.region.fm_band == region_to_set) { fm_rx_set_region()
379 ret = fmc_send_cmd(fmdev, BAND_SET, REG_WR, &payload, fm_rx_set_region()
384 fmc_update_region_info(fmdev, region_to_set); fm_rx_set_region()
387 if (fmdev->rx.freq < fmdev->rx.region.bot_freq) fm_rx_set_region()
388 new_frq = fmdev->rx.region.bot_freq; fm_rx_set_region()
389 else if (fmdev->rx.freq > fmdev->rx.region.top_freq) fm_rx_set_region()
390 new_frq = fmdev->rx.region.top_freq; fm_rx_set_region()
396 ret = fm_rx_set_freq(fmdev, new_frq); fm_rx_set_region()
403 int fm_rx_get_mute_mode(struct fmdev *fmdev, u8 *curr_mute_mode) fm_rx_get_mute_mode() argument
405 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_mute_mode()
413 *curr_mute_mode = fmdev->rx.mute_mode; fm_rx_get_mute_mode()
418 static int fm_config_rx_mute_reg(struct fmdev *fmdev) fm_config_rx_mute_reg() argument
424 switch (fmdev->rx.mute_mode) { fm_config_rx_mute_reg()
437 if (fmdev->rx.rf_depend_mute == FM_RX_RF_DEPENDENT_MUTE_ON) fm_config_rx_mute_reg()
443 ret = fmc_send_cmd(fmdev, MUTE_STATUS_SET, REG_WR, &payload, fm_config_rx_mute_reg()
452 int fm_rx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset) fm_rx_set_mute_mode() argument
457 if (fmdev->rx.mute_mode == mute_mode_toset) fm_rx_set_mute_mode()
460 org_state = fmdev->rx.mute_mode; fm_rx_set_mute_mode()
461 fmdev->rx.mute_mode = mute_mode_toset; fm_rx_set_mute_mode()
463 ret = fm_config_rx_mute_reg(fmdev); fm_rx_set_mute_mode()
465 fmdev->rx.mute_mode = org_state; fm_rx_set_mute_mode()
473 int fm_rx_get_rfdepend_softmute(struct fmdev *fmdev, u8 *curr_mute_mode) fm_rx_get_rfdepend_softmute() argument
475 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_rfdepend_softmute()
483 *curr_mute_mode = fmdev->rx.rf_depend_mute; fm_rx_get_rfdepend_softmute()
489 int fm_rx_set_rfdepend_softmute(struct fmdev *fmdev, u8 rfdepend_mute) fm_rx_set_rfdepend_softmute() argument
494 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_set_rfdepend_softmute()
502 if (fmdev->rx.rf_depend_mute == rfdepend_mute) fm_rx_set_rfdepend_softmute()
505 org_state = fmdev->rx.rf_depend_mute; fm_rx_set_rfdepend_softmute()
506 fmdev->rx.rf_depend_mute = rfdepend_mute; fm_rx_set_rfdepend_softmute()
508 ret = fm_config_rx_mute_reg(fmdev); fm_rx_set_rfdepend_softmute()
510 fmdev->rx.rf_depend_mute = org_state; fm_rx_set_rfdepend_softmute()
518 int fm_rx_get_rssi_level(struct fmdev *fmdev, u16 *rssilvl) fm_rx_get_rssi_level() argument
529 ret = fmc_send_cmd(fmdev, RSSI_LVL_GET, REG_RD, NULL, 2, fm_rx_get_rssi_level()
543 int fm_rx_set_rssi_threshold(struct fmdev *fmdev, short rssi_lvl_toset) fm_rx_set_rssi_threshold() argument
554 ret = fmc_send_cmd(fmdev, SEARCH_LVL_SET, REG_WR, &payload, fm_rx_set_rssi_threshold()
559 fmdev->rx.rssi_threshold = rssi_lvl_toset; fm_rx_set_rssi_threshold()
565 int fm_rx_get_rssi_threshold(struct fmdev *fmdev, short *curr_rssi_lvl) fm_rx_get_rssi_threshold() argument
567 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_rssi_threshold()
575 *curr_rssi_lvl = fmdev->rx.rssi_threshold; fm_rx_get_rssi_threshold()
581 int fm_rx_set_stereo_mono(struct fmdev *fmdev, u16 mode) fm_rx_set_stereo_mono() argument
593 ret = fmc_send_cmd(fmdev, MOST_MODE_SET, REG_WR, &payload, fm_rx_set_stereo_mono()
600 ret = fmc_send_cmd(fmdev, MOST_BLEND_SET, REG_WR, &payload, fm_rx_set_stereo_mono()
609 int fm_rx_get_stereo_mono(struct fmdev *fmdev, u16 *mode) fm_rx_get_stereo_mono() argument
620 ret = fmc_send_cmd(fmdev, MOST_MODE_SET, REG_RD, NULL, 2, fm_rx_get_stereo_mono()
631 int fm_rx_set_deemphasis_mode(struct fmdev *fmdev, u16 mode) fm_rx_set_deemphasis_mode() argument
636 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_set_deemphasis_mode()
646 ret = fmc_send_cmd(fmdev, DEMPH_MODE_SET, REG_WR, &payload, fm_rx_set_deemphasis_mode()
651 fmdev->rx.deemphasis_mode = mode; fm_rx_set_deemphasis_mode()
657 int fm_rx_get_deemph_mode(struct fmdev *fmdev, u16 *curr_deemphasis_mode) fm_rx_get_deemph_mode() argument
659 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_deemph_mode()
667 *curr_deemphasis_mode = fmdev->rx.deemphasis_mode; fm_rx_get_deemph_mode()
673 int fm_rx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis) fm_rx_set_rds_mode() argument
684 && fmdev->rx.rds.flag == FM_RDS_DISABLE) { fm_rx_set_rds_mode()
687 ret = fmc_send_cmd(fmdev, POWER_SET, REG_WR, &payload, fm_rx_set_rds_mode()
694 ret = fmc_send_cmd(fmdev, RDS_CNTRL_SET, REG_WR, &payload, fm_rx_set_rds_mode()
700 ret = fmc_send_cmd(fmdev, FLAG_GET, REG_RD, NULL, 2, fm_rx_set_rds_mode()
707 ret = fmc_send_cmd(fmdev, RDS_MEM_SET, REG_WR, &payload, fm_rx_set_rds_mode()
713 fmdev->irq_info.mask |= FM_RDS_EVENT; fm_rx_set_rds_mode()
714 payload = fmdev->irq_info.mask; fm_rx_set_rds_mode()
715 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_set_rds_mode()
718 fmdev->irq_info.mask &= ~FM_RDS_EVENT; fm_rx_set_rds_mode()
723 fmdev->rx.rds.flag = FM_RDS_ENABLE; fm_rx_set_rds_mode()
725 && fmdev->rx.rds.flag == FM_RDS_ENABLE) { fm_rx_set_rds_mode()
728 ret = fmc_send_cmd(fmdev, POWER_SET, REG_WR, &payload, fm_rx_set_rds_mode()
734 fmdev->rx.rds.last_blk_idx = 0; fm_rx_set_rds_mode()
735 fmdev->rx.rds.wr_idx = 0; fm_rx_set_rds_mode()
736 fmdev->rx.rds.rd_idx = 0; fm_rx_set_rds_mode()
737 fm_rx_reset_station_info(fmdev); fm_rx_set_rds_mode()
740 fmdev->irq_info.mask &= ~(FM_RDS_EVENT); fm_rx_set_rds_mode()
741 fmdev->rx.rds.flag = FM_RDS_DISABLE; fm_rx_set_rds_mode()
748 int fm_rx_get_rds_mode(struct fmdev *fmdev, u8 *curr_rds_en_dis) fm_rx_get_rds_mode() argument
750 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_rds_mode()
758 *curr_rds_en_dis = fmdev->rx.rds.flag; fm_rx_get_rds_mode()
764 int fm_rx_set_rds_system(struct fmdev *fmdev, u8 rds_mode) fm_rx_set_rds_system() argument
769 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_set_rds_system()
778 ret = fmc_send_cmd(fmdev, RDS_SYSTEM_SET, REG_WR, &payload, fm_rx_set_rds_system()
783 fmdev->rx.rds_mode = rds_mode; fm_rx_set_rds_system()
789 int fm_rx_set_af_switch(struct fmdev *fmdev, u8 af_mode) fm_rx_set_af_switch() argument
794 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_set_af_switch()
804 fmdev->irq_info.mask |= FM_LEV_EVENT; fm_rx_set_af_switch()
806 fmdev->irq_info.mask &= ~FM_LEV_EVENT; fm_rx_set_af_switch()
808 payload = fmdev->irq_info.mask; fm_rx_set_af_switch()
809 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_rx_set_af_switch()
814 fmdev->rx.af_mode = af_mode; fm_rx_set_af_switch()
820 int fm_rx_get_af_switch(struct fmdev *fmdev, u8 *af_mode) fm_rx_get_af_switch() argument
822 if (fmdev->curr_fmmode != FM_MODE_RX) fm_rx_get_af_switch()
830 *af_mode = fmdev->rx.af_mode; fm_rx_get_af_switch()
H A Dfmdrv_tx.c27 int fm_tx_set_stereo_mono(struct fmdev *fmdev, u16 mode) fm_tx_set_stereo_mono() argument
32 if (fmdev->tx_data.aud_mode == mode) fm_tx_set_stereo_mono()
39 ret = fmc_send_cmd(fmdev, MONO_SET, REG_WR, &payload, fm_tx_set_stereo_mono()
44 fmdev->tx_data.aud_mode = mode; fm_tx_set_stereo_mono()
49 static int set_rds_text(struct fmdev *fmdev, u8 *rds_text) set_rds_text() argument
54 ret = fmc_send_cmd(fmdev, RDS_DATA_SET, REG_WR, rds_text, set_rds_text()
61 ret = fmc_send_cmd(fmdev, DISPLAY_MODE, REG_WR, &payload, set_rds_text()
69 static int set_rds_data_mode(struct fmdev *fmdev, u8 mode) set_rds_data_mode() argument
76 ret = fmc_send_cmd(fmdev, PI_SET, REG_WR, &payload, set_rds_data_mode()
83 ret = fmc_send_cmd(fmdev, DI_SET, REG_WR, &payload, set_rds_data_mode()
92 static int set_rds_len(struct fmdev *fmdev, u8 type, u16 len) set_rds_len() argument
99 ret = fmc_send_cmd(fmdev, RDS_CONFIG_DATA_SET, REG_WR, &payload, set_rds_len()
108 int fm_tx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis) fm_tx_set_rds_mode() argument
119 set_rds_len(fmdev, 0, strlen(rds_text)); fm_tx_set_rds_mode()
122 set_rds_text(fmdev, rds_text); fm_tx_set_rds_mode()
125 set_rds_data_mode(fmdev, 0x0); fm_tx_set_rds_mode()
134 ret = fmc_send_cmd(fmdev, RDS_DATA_ENB, REG_WR, &payload, fm_tx_set_rds_mode()
141 set_rds_len(fmdev, 0, strlen(rds_text)); fm_tx_set_rds_mode()
144 set_rds_text(fmdev, rds_text); fm_tx_set_rds_mode()
146 fmdev->tx_data.rds.flag = rds_en_dis; fm_tx_set_rds_mode()
151 int fm_tx_set_radio_text(struct fmdev *fmdev, u8 *rds_text, u8 rds_type) fm_tx_set_radio_text() argument
156 if (fmdev->curr_fmmode != FM_MODE_TX) fm_tx_set_radio_text()
159 fm_tx_set_rds_mode(fmdev, 0); fm_tx_set_radio_text()
162 set_rds_len(fmdev, rds_type, strlen(rds_text)); fm_tx_set_radio_text()
165 set_rds_text(fmdev, rds_text); fm_tx_set_radio_text()
168 set_rds_data_mode(fmdev, 0x0); fm_tx_set_radio_text()
171 ret = fmc_send_cmd(fmdev, RDS_DATA_ENB, REG_WR, &payload, fm_tx_set_radio_text()
179 int fm_tx_set_af(struct fmdev *fmdev, u32 af) fm_tx_set_af() argument
184 if (fmdev->curr_fmmode != FM_MODE_TX) fm_tx_set_af()
191 ret = fmc_send_cmd(fmdev, TA_SET, REG_WR, &payload, fm_tx_set_af()
199 int fm_tx_set_region(struct fmdev *fmdev, u8 region) fm_tx_set_region() argument
211 ret = fmc_send_cmd(fmdev, TX_BAND_SET, REG_WR, &payload, fm_tx_set_region()
219 int fm_tx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset) fm_tx_set_mute_mode() argument
227 ret = fmc_send_cmd(fmdev, MUTE, REG_WR, &payload, fm_tx_set_mute_mode()
236 static int set_audio_io(struct fmdev *fmdev) set_audio_io() argument
238 struct fmtx_data *tx = &fmdev->tx_data; set_audio_io()
244 ret = fmc_send_cmd(fmdev, AUDIO_IO_SET, REG_WR, &payload, set_audio_io()
254 static int enable_xmit(struct fmdev *fmdev, u8 new_xmit_state) enable_xmit() argument
256 struct fmtx_data *tx = &fmdev->tx_data; enable_xmit()
263 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, enable_xmit()
270 ret = fmc_send_cmd(fmdev, POWER_ENB_SET, REG_WR, &payload, enable_xmit()
276 init_completion(&fmdev->maintask_comp); enable_xmit()
277 timeleft = wait_for_completion_timeout(&fmdev->maintask_comp, enable_xmit()
285 set_bit(FM_CORE_TX_XMITING, &fmdev->flag); enable_xmit()
292 int fm_tx_set_pwr_lvl(struct fmdev *fmdev, u8 new_pwr_lvl) fm_tx_set_pwr_lvl() argument
295 struct fmtx_data *tx = &fmdev->tx_data; fm_tx_set_pwr_lvl()
298 if (fmdev->curr_fmmode != FM_MODE_TX) fm_tx_set_pwr_lvl()
303 if (!test_bit(FM_CORE_READY, &fmdev->flag)) { fm_tx_set_pwr_lvl()
316 ret = fmc_send_cmd(fmdev, POWER_LEV_SET, REG_WR, &payload, fm_tx_set_pwr_lvl()
331 int fm_tx_set_preemph_filter(struct fmdev *fmdev, u32 preemphasis) fm_tx_set_preemph_filter() argument
333 struct fmtx_data *tx = &fmdev->tx_data; fm_tx_set_preemph_filter()
337 if (fmdev->curr_fmmode != FM_MODE_TX) fm_tx_set_preemph_filter()
352 ret = fmc_send_cmd(fmdev, PREMPH_SET, REG_WR, &payload, fm_tx_set_preemph_filter()
363 int fm_tx_get_tune_cap_val(struct fmdev *fmdev) fm_tx_get_tune_cap_val() argument
369 if (fmdev->curr_fmmode != FM_MODE_TX) fm_tx_get_tune_cap_val()
372 ret = fmc_send_cmd(fmdev, READ_FMANT_TUNE_VALUE, REG_RD, fm_tx_get_tune_cap_val()
383 int fm_tx_set_freq(struct fmdev *fmdev, u32 freq_to_set) fm_tx_set_freq() argument
385 struct fmtx_data *tx = &fmdev->tx_data; fm_tx_set_freq()
389 if (test_bit(FM_CORE_TX_XMITING, &fmdev->flag)) { fm_tx_set_freq()
390 enable_xmit(fmdev, 0); fm_tx_set_freq()
391 clear_bit(FM_CORE_TX_XMITING, &fmdev->flag); fm_tx_set_freq()
396 ret = fmc_send_cmd(fmdev, INT_MASK_SET, REG_WR, &payload, fm_tx_set_freq()
408 ret = fmc_send_cmd(fmdev, CHANL_SET, REG_WR, &payload, fm_tx_set_freq()
413 fm_tx_set_pwr_lvl(fmdev, tx->pwr_lvl); fm_tx_set_freq()
414 fm_tx_set_preemph_filter(fmdev, tx->preemph); fm_tx_set_freq()
417 set_audio_io(fmdev); fm_tx_set_freq()
419 enable_xmit(fmdev, 0x01); /* Enable transmission */ fm_tx_set_freq()
H A Dfmdrv_v4l2.c50 struct fmdev *fmdev; fm_v4l2_fops_read() local
52 fmdev = video_drvdata(file); fm_v4l2_fops_read()
59 if (mutex_lock_interruptible(&fmdev->mutex)) fm_v4l2_fops_read()
63 ret = fm_rx_get_rds_mode(fmdev, &rds_mode); fm_v4l2_fops_read()
70 ret = fmc_set_rds_mode(fmdev, FM_RDS_ENABLE); fm_v4l2_fops_read()
78 ret = fmc_transfer_rds_from_internal_buff(fmdev, file, buf, count); fm_v4l2_fops_read()
80 mutex_unlock(&fmdev->mutex); fm_v4l2_fops_read()
90 struct fmdev *fmdev; fm_v4l2_fops_write() local
99 fmdev = video_drvdata(file); fm_v4l2_fops_write()
100 if (mutex_lock_interruptible(&fmdev->mutex)) fm_v4l2_fops_write()
102 fm_tx_set_radio_text(fmdev, rds.text, rds.text_type); fm_v4l2_fops_write()
103 fm_tx_set_af(fmdev, rds.af_freq); fm_v4l2_fops_write()
104 mutex_unlock(&fmdev->mutex); fm_v4l2_fops_write()
112 struct fmdev *fmdev; fm_v4l2_fops_poll() local
114 fmdev = video_drvdata(file); fm_v4l2_fops_poll()
115 mutex_lock(&fmdev->mutex); fm_v4l2_fops_poll()
116 ret = fmc_is_rds_data_available(fmdev, file, pts); fm_v4l2_fops_poll()
117 mutex_unlock(&fmdev->mutex); fm_v4l2_fops_poll()
131 struct fmdev *fmdev = NULL; fm_v4l2_fops_open() local
139 fmdev = video_drvdata(file); fm_v4l2_fops_open()
141 if (mutex_lock_interruptible(&fmdev->mutex)) fm_v4l2_fops_open()
143 ret = fmc_prepare(fmdev); fm_v4l2_fops_open()
151 ret = fmc_set_mode(fmdev, FM_MODE_RX); fm_v4l2_fops_open()
159 mutex_unlock(&fmdev->mutex); fm_v4l2_fops_open()
166 struct fmdev *fmdev; fm_v4l2_fops_release() local
168 fmdev = video_drvdata(file); fm_v4l2_fops_release()
174 mutex_lock(&fmdev->mutex); fm_v4l2_fops_release()
175 ret = fmc_set_mode(fmdev, FM_MODE_OFF); fm_v4l2_fops_release()
181 ret = fmc_release(fmdev); fm_v4l2_fops_release()
189 mutex_unlock(&fmdev->mutex); fm_v4l2_fops_release()
213 struct fmdev *fmdev = container_of(ctrl->handler, fm_g_volatile_ctrl() local
214 struct fmdev, ctrl_handler); fm_g_volatile_ctrl()
218 ctrl->val = fm_tx_get_tune_cap_val(fmdev); fm_g_volatile_ctrl()
230 struct fmdev *fmdev = container_of(ctrl->handler, fm_v4l2_s_ctrl() local
231 struct fmdev, ctrl_handler); fm_v4l2_s_ctrl()
235 return fm_rx_set_volume(fmdev, (u16)ctrl->val); fm_v4l2_s_ctrl()
238 return fmc_set_mute_mode(fmdev, (u8)ctrl->val); fm_v4l2_s_ctrl()
242 return fm_tx_set_pwr_lvl(fmdev, (u8)ctrl->val); fm_v4l2_s_ctrl()
245 return fm_tx_set_preemph_filter(fmdev, (u8) ctrl->val); fm_v4l2_s_ctrl()
275 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_g_tuner() local
285 if (fmdev->curr_fmmode != FM_MODE_RX) fm_v4l2_vidioc_g_tuner()
288 ret = fm_rx_get_band_freq_range(fmdev, &bottom_freq, &top_freq); fm_v4l2_vidioc_g_tuner()
292 ret = fm_rx_get_stereo_mono(fmdev, &stereo_mono_mode); fm_v4l2_vidioc_g_tuner()
296 ret = fm_rx_get_rssi_level(fmdev, &rssilvl); fm_v4l2_vidioc_g_tuner()
306 ((fmdev->rx.rds.flag == FM_RDS_ENABLE) ? V4L2_TUNER_SUB_RDS : 0); fm_v4l2_vidioc_g_tuner()
338 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_s_tuner() local
351 if (fmdev->curr_fmmode != FM_MODE_RX) { fm_v4l2_vidioc_s_tuner()
352 ret = fmc_set_mode(fmdev, FM_MODE_RX); fm_v4l2_vidioc_s_tuner()
359 ret = fmc_set_stereo_mono(fmdev, aud_mode); fm_v4l2_vidioc_s_tuner()
365 ret = fmc_set_rds_mode(fmdev, rds_mode); fm_v4l2_vidioc_s_tuner()
376 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_g_freq() local
379 ret = fmc_get_freq(fmdev, &freq->frequency); fm_v4l2_vidioc_g_freq()
395 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_s_freq() local
401 return fmc_set_freq(fmdev, freq->frequency / 16); fm_v4l2_vidioc_s_freq()
408 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_s_hw_freq_seek() local
414 if (fmdev->curr_fmmode != FM_MODE_RX) { fm_v4l2_vidioc_s_hw_freq_seek()
415 ret = fmc_set_mode(fmdev, FM_MODE_RX); fm_v4l2_vidioc_s_hw_freq_seek()
422 ret = fm_rx_seek(fmdev, seek->seek_upward, seek->wrap_around, fm_v4l2_vidioc_s_hw_freq_seek()
433 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_g_modulator() local
438 if (fmdev->curr_fmmode != FM_MODE_TX) fm_v4l2_vidioc_g_modulator()
441 mod->txsubchans = ((fmdev->tx_data.aud_mode == FM_STEREO_MODE) ? fm_v4l2_vidioc_g_modulator()
443 ((fmdev->tx_data.rds.flag == FM_RDS_ENABLE) ? fm_v4l2_vidioc_g_modulator()
456 struct fmdev *fmdev = video_drvdata(file); fm_v4l2_vidioc_s_modulator() local
464 if (fmdev->curr_fmmode != FM_MODE_TX) { fm_v4l2_vidioc_s_modulator()
465 ret = fmc_set_mode(fmdev, FM_MODE_TX); fm_v4l2_vidioc_s_modulator()
476 ret = fm_tx_set_stereo_mono(fmdev, aud_mode); fm_v4l2_vidioc_s_modulator()
481 ret = fm_tx_set_rds_mode(fmdev, rds_mode); fm_v4l2_vidioc_s_modulator()
533 int fm_v4l2_init_video_device(struct fmdev *fmdev, int radio_nr) fm_v4l2_init_video_device() argument
538 strlcpy(fmdev->v4l2_dev.name, FM_DRV_NAME, sizeof(fmdev->v4l2_dev.name)); fm_v4l2_init_video_device()
539 ret = v4l2_device_register(NULL, &fmdev->v4l2_dev); fm_v4l2_init_video_device()
544 mutex_init(&fmdev->mutex); fm_v4l2_init_video_device()
549 video_set_drvdata(&gradio_dev, fmdev); fm_v4l2_init_video_device()
551 gradio_dev.lock = &fmdev->mutex; fm_v4l2_init_video_device()
552 gradio_dev.v4l2_dev = &fmdev->v4l2_dev; fm_v4l2_init_video_device()
560 fmdev->radio_dev = &gradio_dev; fm_v4l2_init_video_device()
563 fmdev->radio_dev->ctrl_handler = &fmdev->ctrl_handler; fm_v4l2_init_video_device()
565 ret = v4l2_ctrl_handler_init(&fmdev->ctrl_handler, 5); fm_v4l2_init_video_device()
567 fmerr("(fmdev): Can't init ctrl handler\n"); fm_v4l2_init_video_device()
568 v4l2_ctrl_handler_free(&fmdev->ctrl_handler); fm_v4l2_init_video_device()
576 v4l2_ctrl_new_std(&fmdev->ctrl_handler, &fm_ctrl_ops, fm_v4l2_init_video_device()
580 v4l2_ctrl_new_std(&fmdev->ctrl_handler, &fm_ctrl_ops, fm_v4l2_init_video_device()
583 v4l2_ctrl_new_std_menu(&fmdev->ctrl_handler, &fm_ctrl_ops, fm_v4l2_init_video_device()
587 v4l2_ctrl_new_std(&fmdev->ctrl_handler, &fm_ctrl_ops, fm_v4l2_init_video_device()
591 ctrl = v4l2_ctrl_new_std(&fmdev->ctrl_handler, &fm_ctrl_ops, fm_v4l2_init_video_device()
603 struct fmdev *fmdev; fm_v4l2_deinit_video_device() local
606 fmdev = video_get_drvdata(&gradio_dev); fm_v4l2_deinit_video_device()
609 v4l2_ctrl_handler_free(&fmdev->ctrl_handler); fm_v4l2_deinit_video_device()
614 v4l2_device_unregister(&fmdev->v4l2_dev); fm_v4l2_deinit_video_device()
616 return fmdev; fm_v4l2_deinit_video_device()
H A Dfmdrv_tx.h25 int fm_tx_set_freq(struct fmdev *, u32);
26 int fm_tx_set_pwr_lvl(struct fmdev *, u8);
27 int fm_tx_set_region(struct fmdev *, u8);
28 int fm_tx_set_mute_mode(struct fmdev *, u8);
29 int fm_tx_set_stereo_mono(struct fmdev *, u16);
30 int fm_tx_set_rds_mode(struct fmdev *, u8);
31 int fm_tx_set_radio_text(struct fmdev *, u8 *, u8);
32 int fm_tx_set_af(struct fmdev *, u32);
33 int fm_tx_set_preemph_filter(struct fmdev *, u32);
34 int fm_tx_get_tune_cap_val(struct fmdev *);
H A Dfmdrv_common.h371 int fmc_prepare(struct fmdev *);
372 int fmc_release(struct fmdev *);
374 void fmc_update_region_info(struct fmdev *, u8);
375 int fmc_send_cmd(struct fmdev *, u8, u16,
377 int fmc_is_rds_data_available(struct fmdev *, struct file *,
379 int fmc_transfer_rds_from_internal_buff(struct fmdev *, struct file *,
382 int fmc_set_freq(struct fmdev *, u32);
383 int fmc_set_mode(struct fmdev *, u8);
384 int fmc_set_region(struct fmdev *, u8);
385 int fmc_set_mute_mode(struct fmdev *, u8);
386 int fmc_set_stereo_mono(struct fmdev *, u16);
387 int fmc_set_rds_mode(struct fmdev *, u8);
389 int fmc_get_freq(struct fmdev *, u32 *);
390 int fmc_get_region(struct fmdev *, u8 *);
391 int fmc_get_mode(struct fmdev *, u8 *);
H A Dfmdrv_v4l2.h30 int fm_v4l2_init_video_device(struct fmdev *, int);
H A Dfmdrv.h108 struct fmdev;
109 typedef void (*int_handler_prototype) (struct fmdev *);
204 struct fmdev { struct

Completed in 148 milliseconds