/linux-4.1.27/drivers/media/radio/wl128x/ |
H A D | fmdrv_rx.h | 25 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 D | fmdrv_common.c | 79 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 D | fmdrv_rx.c | 28 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 D | fmdrv_tx.c | 27 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 D | fmdrv_v4l2.c | 50 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 D | fmdrv_tx.h | 25 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 D | fmdrv_common.h | 371 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 D | fmdrv_v4l2.h | 30 int fm_v4l2_init_video_device(struct fmdev *, int);
|
H A D | fmdrv.h | 108 struct fmdev; 109 typedef void (*int_handler_prototype) (struct fmdev *); 204 struct fmdev { struct
|