Lines Matching refs:radio
143 static int wl1273_fm_rds(struct wl1273_device *radio) in wl1273_fm_rds() argument
145 struct wl1273_core *core = radio->core; in wl1273_fm_rds()
182 dev_err(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_rds()
206 memcpy(&radio->buffer[radio->wr_index], &rds, RDS_BLOCK_SIZE); in wl1273_fm_rds()
207 radio->wr_index += 3; in wl1273_fm_rds()
210 if (radio->wr_index >= radio->buf_size) in wl1273_fm_rds()
211 radio->wr_index = 0; in wl1273_fm_rds()
214 if (radio->wr_index == radio->rd_index) { in wl1273_fm_rds()
215 dev_dbg(radio->dev, "RDS OVERFLOW"); in wl1273_fm_rds()
217 radio->rd_index = 0; in wl1273_fm_rds()
218 radio->wr_index = 0; in wl1273_fm_rds()
224 if (radio->wr_index != radio->rd_index) in wl1273_fm_rds()
225 wake_up_interruptible(&radio->read_queue); in wl1273_fm_rds()
232 struct wl1273_device *radio = dev_id; in wl1273_fm_irq_thread_handler() local
233 struct wl1273_core *core = radio->core; in wl1273_fm_irq_thread_handler()
242 radio->irq_received = flags; in wl1273_fm_irq_thread_handler()
243 dev_dbg(radio->dev, "IRQ: BL\n"); in wl1273_fm_irq_thread_handler()
249 wl1273_fm_rds(radio); in wl1273_fm_irq_thread_handler()
253 dev_dbg(radio->dev, "IRQ: BBLK\n"); in wl1273_fm_irq_thread_handler()
256 dev_dbg(radio->dev, "IRQ: LSYNC\n"); in wl1273_fm_irq_thread_handler()
266 dev_dbg(radio->dev, "IRQ: LEV: 0x%x04\n", level); in wl1273_fm_irq_thread_handler()
270 dev_dbg(radio->dev, "IRQ: IFFR\n"); in wl1273_fm_irq_thread_handler()
273 dev_dbg(radio->dev, "IRQ: PI\n"); in wl1273_fm_irq_thread_handler()
276 dev_dbg(radio->dev, "IRQ: PD\n"); in wl1273_fm_irq_thread_handler()
279 dev_dbg(radio->dev, "IRQ: STIC\n"); in wl1273_fm_irq_thread_handler()
282 dev_dbg(radio->dev, "IRQ: MAL\n"); in wl1273_fm_irq_thread_handler()
285 complete(&radio->busy); in wl1273_fm_irq_thread_handler()
286 dev_dbg(radio->dev, "NOT BUSY\n"); in wl1273_fm_irq_thread_handler()
287 dev_dbg(radio->dev, "IRQ: POW_ENB\n"); in wl1273_fm_irq_thread_handler()
291 dev_dbg(radio->dev, "IRQ: SCAN_OVER\n"); in wl1273_fm_irq_thread_handler()
294 dev_dbg(radio->dev, "IRQ: ERROR\n"); in wl1273_fm_irq_thread_handler()
299 dev_dbg(radio->dev, "IRQ: FR:\n"); in wl1273_fm_irq_thread_handler()
305 dev_err(radio->dev, in wl1273_fm_irq_thread_handler()
315 if (radio->band == WL1273_BAND_JAPAN) in wl1273_fm_irq_thread_handler()
316 radio->rx_frequency = WL1273_BAND_JAPAN_LOW + in wl1273_fm_irq_thread_handler()
319 radio->rx_frequency = WL1273_BAND_OTHER_LOW + in wl1273_fm_irq_thread_handler()
327 dev_dbg(radio->dev, "%dkHz\n", radio->rx_frequency); in wl1273_fm_irq_thread_handler()
334 dev_dbg(radio->dev, "%dkHz\n", freq); in wl1273_fm_irq_thread_handler()
336 dev_dbg(radio->dev, "%s: NOT BUSY\n", __func__); in wl1273_fm_irq_thread_handler()
340 core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_irq_thread_handler()
341 complete(&radio->busy); in wl1273_fm_irq_thread_handler()
346 static int wl1273_fm_set_tx_freq(struct wl1273_device *radio, unsigned int freq) in wl1273_fm_set_tx_freq() argument
348 struct wl1273_core *core = radio->core; in wl1273_fm_set_tx_freq()
353 dev_err(radio->dev, in wl1273_fm_set_tx_freq()
360 dev_err(radio->dev, in wl1273_fm_set_tx_freq()
372 dev_dbg(radio->dev, "%s: freq: %d kHz\n", __func__, freq); in wl1273_fm_set_tx_freq()
379 reinit_completion(&radio->busy); in wl1273_fm_set_tx_freq()
382 t = wait_for_completion_timeout(&radio->busy, msecs_to_jiffies(2000)); in wl1273_fm_set_tx_freq()
386 dev_dbg(radio->dev, "WL1273_CHANL_SET: %lu\n", t); in wl1273_fm_set_tx_freq()
393 reinit_completion(&radio->busy); in wl1273_fm_set_tx_freq()
396 t = wait_for_completion_timeout(&radio->busy, msecs_to_jiffies(1000)); in wl1273_fm_set_tx_freq()
400 radio->tx_frequency = freq; in wl1273_fm_set_tx_freq()
401 dev_dbg(radio->dev, "WL1273_POWER_ENB_SET: %lu\n", t); in wl1273_fm_set_tx_freq()
406 static int wl1273_fm_set_rx_freq(struct wl1273_device *radio, unsigned int freq) in wl1273_fm_set_rx_freq() argument
408 struct wl1273_core *core = radio->core; in wl1273_fm_set_rx_freq()
412 if (freq < radio->rangelow) { in wl1273_fm_set_rx_freq()
413 dev_err(radio->dev, in wl1273_fm_set_rx_freq()
415 radio->rangelow); in wl1273_fm_set_rx_freq()
420 if (freq > radio->rangehigh) { in wl1273_fm_set_rx_freq()
421 dev_err(radio->dev, in wl1273_fm_set_rx_freq()
423 radio->rangehigh); in wl1273_fm_set_rx_freq()
428 dev_dbg(radio->dev, "%s: %dkHz\n", __func__, freq); in wl1273_fm_set_rx_freq()
430 core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_rx_freq()
432 if (radio->band == WL1273_BAND_JAPAN) in wl1273_fm_set_rx_freq()
439 dev_err(radio->dev, "FREQ_SET fails\n"); in wl1273_fm_set_rx_freq()
445 dev_err(radio->dev, "TUNER_MODE_SET fails\n"); in wl1273_fm_set_rx_freq()
449 reinit_completion(&radio->busy); in wl1273_fm_set_rx_freq()
451 t = wait_for_completion_timeout(&radio->busy, msecs_to_jiffies(2000)); in wl1273_fm_set_rx_freq()
453 dev_err(radio->dev, "%s: TIMEOUT\n", __func__); in wl1273_fm_set_rx_freq()
457 radio->rd_index = 0; in wl1273_fm_set_rx_freq()
458 radio->wr_index = 0; in wl1273_fm_set_rx_freq()
459 radio->rx_frequency = freq; in wl1273_fm_set_rx_freq()
465 static int wl1273_fm_get_freq(struct wl1273_device *radio) in wl1273_fm_get_freq() argument
467 struct wl1273_core *core = radio->core; in wl1273_fm_get_freq()
477 dev_dbg(radio->dev, "Freq get: 0x%04x\n", f); in wl1273_fm_get_freq()
478 if (radio->band == WL1273_BAND_JAPAN) in wl1273_fm_get_freq()
501 static int wl1273_fm_upload_firmware_patch(struct wl1273_device *radio) in wl1273_fm_upload_firmware_patch() argument
503 struct wl1273_core *core = radio->core; in wl1273_fm_upload_firmware_patch()
507 struct device *dev = radio->dev; in wl1273_fm_upload_firmware_patch()
542 static int wl1273_fm_stop(struct wl1273_device *radio) in wl1273_fm_stop() argument
544 struct wl1273_core *core = radio->core; in wl1273_fm_stop()
550 dev_err(radio->dev, "%s: POWER_SET fails: %d\n", in wl1273_fm_stop()
556 dev_err(radio->dev, in wl1273_fm_stop()
562 dev_dbg(radio->dev, "Back to reset\n"); in wl1273_fm_stop()
568 static int wl1273_fm_start(struct wl1273_device *radio, int new_mode) in wl1273_fm_start() argument
570 struct wl1273_core *core = radio->core; in wl1273_fm_start()
572 struct device *dev = radio->dev; in wl1273_fm_start()
576 dev_dbg(radio->dev, "Out of reset\n"); in wl1273_fm_start()
585 if (radio->rds_on) in wl1273_fm_start()
601 radio->wr_index = 0; in wl1273_fm_start()
602 radio->rd_index = 0; in wl1273_fm_start()
617 if (radio->rds_on) in wl1273_fm_start()
626 r = wl1273_fm_upload_firmware_patch(radio); in wl1273_fm_start()
637 if (radio->rds_on) in wl1273_fm_start()
664 static int wl1273_fm_suspend(struct wl1273_device *radio) in wl1273_fm_suspend() argument
666 struct wl1273_core *core = radio->core; in wl1273_fm_suspend()
680 dev_err(radio->dev, "%s: POWER_SET fails: %d\n", __func__, r); in wl1273_fm_suspend()
688 static int wl1273_fm_set_mode(struct wl1273_device *radio, int mode) in wl1273_fm_set_mode() argument
690 struct wl1273_core *core = radio->core; in wl1273_fm_set_mode()
691 struct device *dev = radio->dev; in wl1273_fm_set_mode()
696 dev_dbg(dev, "Forbidden modes: 0x%02x\n", radio->forbidden); in wl1273_fm_set_mode()
699 if (mode & radio->forbidden) { in wl1273_fm_set_mode()
707 r = wl1273_fm_start(radio, mode); in wl1273_fm_set_mode()
710 wl1273_fm_stop(radio); in wl1273_fm_set_mode()
715 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_mode()
723 r = wl1273_fm_set_rx_freq(radio, radio->rx_frequency); in wl1273_fm_set_mode()
738 r = wl1273_fm_set_tx_freq(radio, radio->tx_frequency); in wl1273_fm_set_mode()
745 dev_dbg(radio->dev, "%s: Set audio mode.\n", __func__); in wl1273_fm_set_mode()
753 r = wl1273_fm_stop(radio); in wl1273_fm_set_mode()
762 r = wl1273_fm_suspend(radio); in wl1273_fm_set_mode()
782 static int wl1273_fm_set_seek(struct wl1273_device *radio, in wl1273_fm_set_seek() argument
787 struct wl1273_core *core = radio->core; in wl1273_fm_set_seek()
792 f = radio->rx_frequency; in wl1273_fm_set_seek()
793 dev_dbg(radio->dev, "rx_frequency: %d\n", f); in wl1273_fm_set_seek()
795 if (dir && f + radio->spacing <= radio->rangehigh) in wl1273_fm_set_seek()
796 r = wl1273_fm_set_rx_freq(radio, f + radio->spacing); in wl1273_fm_set_seek()
798 r = wl1273_fm_set_rx_freq(radio, radio->rangelow); in wl1273_fm_set_seek()
799 else if (f - radio->spacing >= radio->rangelow) in wl1273_fm_set_seek()
800 r = wl1273_fm_set_rx_freq(radio, f - radio->spacing); in wl1273_fm_set_seek()
802 r = wl1273_fm_set_rx_freq(radio, radio->rangehigh); in wl1273_fm_set_seek()
810 reinit_completion(&radio->busy); in wl1273_fm_set_seek()
811 dev_dbg(radio->dev, "%s: BUSY\n", __func__); in wl1273_fm_set_seek()
813 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_seek()
817 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_set_seek()
832 wait_for_completion_timeout(&radio->busy, msecs_to_jiffies(1000)); in wl1273_fm_set_seek()
833 if (!(radio->irq_received & WL1273_BL_EVENT)) { in wl1273_fm_set_seek()
838 radio->irq_received &= ~WL1273_BL_EVENT; in wl1273_fm_set_seek()
844 dev_dbg(radio->dev, "Wrap around in HW seek.\n"); in wl1273_fm_set_seek()
847 f = radio->rangelow; in wl1273_fm_set_seek()
849 f = radio->rangehigh; in wl1273_fm_set_seek()
851 r = wl1273_fm_set_rx_freq(radio, f); in wl1273_fm_set_seek()
855 reinit_completion(&radio->busy); in wl1273_fm_set_seek()
856 dev_dbg(radio->dev, "%s: BUSY\n", __func__); in wl1273_fm_set_seek()
863 if (!wait_for_completion_timeout(&radio->busy, msecs_to_jiffies(1000))) in wl1273_fm_set_seek()
866 dev_dbg(radio->dev, "%s: Err: %d\n", __func__, r); in wl1273_fm_set_seek()
874 static unsigned int wl1273_fm_get_tx_ctune(struct wl1273_device *radio) in wl1273_fm_get_tx_ctune() argument
876 struct wl1273_core *core = radio->core; in wl1273_fm_get_tx_ctune()
877 struct device *dev = radio->dev; in wl1273_fm_get_tx_ctune()
903 static int wl1273_fm_set_preemphasis(struct wl1273_device *radio, in wl1273_fm_set_preemphasis() argument
906 struct wl1273_core *core = radio->core; in wl1273_fm_set_preemphasis()
935 radio->preemphasis = preemphasis; in wl1273_fm_set_preemphasis()
942 static int wl1273_fm_rds_on(struct wl1273_device *radio) in wl1273_fm_rds_on() argument
944 struct wl1273_core *core = radio->core; in wl1273_fm_rds_on()
947 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_rds_on()
948 if (radio->rds_on) in wl1273_fm_rds_on()
956 r = wl1273_fm_set_rx_freq(radio, radio->rx_frequency); in wl1273_fm_rds_on()
958 dev_err(radio->dev, "set freq fails: %d.\n", r); in wl1273_fm_rds_on()
963 static int wl1273_fm_rds_off(struct wl1273_device *radio) in wl1273_fm_rds_off() argument
965 struct wl1273_core *core = radio->core; in wl1273_fm_rds_off()
968 if (!radio->rds_on) in wl1273_fm_rds_off()
971 radio->irq_flags &= ~WL1273_RDS_EVENT; in wl1273_fm_rds_off()
973 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_rds_off()
978 wake_up_interruptible(&radio->read_queue); in wl1273_fm_rds_off()
980 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_rds_off()
986 r = wl1273_fm_set_rx_freq(radio, radio->rx_frequency); in wl1273_fm_rds_off()
988 dev_err(radio->dev, "set freq fails: %d.\n", r); in wl1273_fm_rds_off()
990 dev_dbg(radio->dev, "%s: exiting...\n", __func__); in wl1273_fm_rds_off()
995 static int wl1273_fm_set_rds(struct wl1273_device *radio, unsigned int new_mode) in wl1273_fm_set_rds() argument
998 struct wl1273_core *core = radio->core; in wl1273_fm_set_rds()
1014 r = wl1273_fm_rds_off(radio); in wl1273_fm_set_rds()
1016 r = wl1273_fm_rds_on(radio); in wl1273_fm_set_rds()
1018 dev_err(radio->dev, "%s: Unknown mode: %d\n", in wl1273_fm_set_rds()
1024 radio->rds_on = (new_mode == WL1273_RDS_ON) ? true : false; in wl1273_fm_set_rds()
1032 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_fops_write() local
1033 struct wl1273_core *core = radio->core; in wl1273_fm_fops_write()
1037 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_fops_write()
1042 if (radio->rds_users == 0) { in wl1273_fm_fops_write()
1043 dev_warn(radio->dev, "%s: RDS not on.\n", __func__); in wl1273_fm_fops_write()
1053 if (radio->owner && radio->owner != file) { in wl1273_fm_fops_write()
1057 radio->owner = file; in wl1273_fm_fops_write()
1067 if (copy_from_user(radio->write_buf + 1, buf, val)) { in wl1273_fm_fops_write()
1072 dev_dbg(radio->dev, "Count: %d\n", val); in wl1273_fm_fops_write()
1073 dev_dbg(radio->dev, "From user: \"%s\"\n", radio->write_buf); in wl1273_fm_fops_write()
1075 radio->write_buf[0] = WL1273_RDS_DATA_SET; in wl1273_fm_fops_write()
1076 core->write_data(core, radio->write_buf, val + 1); in wl1273_fm_fops_write()
1088 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_fops_poll() local
1089 struct wl1273_core *core = radio->core; in wl1273_fm_fops_poll()
1091 if (radio->owner && radio->owner != file) in wl1273_fm_fops_poll()
1094 radio->owner = file; in wl1273_fm_fops_poll()
1097 poll_wait(file, &radio->read_queue, pts); in wl1273_fm_fops_poll()
1099 if (radio->rd_index != radio->wr_index) in wl1273_fm_fops_poll()
1111 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_fops_open() local
1112 struct wl1273_core *core = radio->core; in wl1273_fm_fops_open()
1115 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_fops_open()
1117 if (core->mode == WL1273_MODE_RX && radio->rds_on && in wl1273_fm_fops_open()
1118 !radio->rds_users) { in wl1273_fm_fops_open()
1119 dev_dbg(radio->dev, "%s: Mode: %d\n", __func__, core->mode); in wl1273_fm_fops_open()
1124 radio->irq_flags |= WL1273_RDS_EVENT; in wl1273_fm_fops_open()
1127 radio->irq_flags); in wl1273_fm_fops_open()
1133 radio->rds_users++; in wl1273_fm_fops_open()
1143 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_fops_release() local
1144 struct wl1273_core *core = radio->core; in wl1273_fm_fops_release()
1147 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_fops_release()
1149 if (radio->rds_users > 0) { in wl1273_fm_fops_release()
1150 radio->rds_users--; in wl1273_fm_fops_release()
1151 if (radio->rds_users == 0) { in wl1273_fm_fops_release()
1155 radio->irq_flags &= ~WL1273_RDS_EVENT; in wl1273_fm_fops_release()
1160 radio->irq_flags); in wl1273_fm_fops_release()
1170 if (file == radio->owner) in wl1273_fm_fops_release()
1171 radio->owner = NULL; in wl1273_fm_fops_release()
1180 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_fops_read() local
1181 struct wl1273_core *core = radio->core; in wl1273_fm_fops_read()
1185 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_fops_read()
1190 if (radio->rds_users == 0) { in wl1273_fm_fops_read()
1191 dev_warn(radio->dev, "%s: RDS not on.\n", __func__); in wl1273_fm_fops_read()
1202 if (radio->owner && radio->owner != file) { in wl1273_fm_fops_read()
1206 radio->owner = file; in wl1273_fm_fops_read()
1210 dev_err(radio->dev, "%s: Get RDS_SYNC fails.\n", __func__); in wl1273_fm_fops_read()
1213 dev_info(radio->dev, "RDS_SYNC: Not synchronized\n"); in wl1273_fm_fops_read()
1219 while (radio->wr_index == radio->rd_index) { in wl1273_fm_fops_read()
1225 dev_dbg(radio->dev, "%s: Wait for RDS data.\n", __func__); in wl1273_fm_fops_read()
1226 if (wait_event_interruptible(radio->read_queue, in wl1273_fm_fops_read()
1227 radio->wr_index != in wl1273_fm_fops_read()
1228 radio->rd_index) < 0) { in wl1273_fm_fops_read()
1239 if (radio->rd_index == radio->wr_index) in wl1273_fm_fops_read()
1243 if (copy_to_user(buf, &radio->buffer[radio->rd_index], in wl1273_fm_fops_read()
1248 radio->rd_index += RDS_BLOCK_SIZE; in wl1273_fm_fops_read()
1249 if (radio->rd_index >= radio->buf_size) in wl1273_fm_fops_read()
1250 radio->rd_index = 0; in wl1273_fm_fops_read()
1259 dev_dbg(radio->dev, "%s: exit\n", __func__); in wl1273_fm_fops_read()
1278 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_querycap() local
1280 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_querycap()
1286 strlcpy(capability->bus_info, radio->bus_type, in wl1273_fm_vidioc_querycap()
1302 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_g_input() local
1304 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_g_input()
1314 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_input() local
1316 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_input()
1329 static int wl1273_fm_set_tx_power(struct wl1273_device *radio, u16 power) in wl1273_fm_set_tx_power() argument
1331 struct wl1273_core *core = radio->core; in wl1273_fm_set_tx_power()
1345 radio->tx_power = power; in wl1273_fm_set_tx_power()
1356 static int wl1273_fm_tx_set_spacing(struct wl1273_device *radio, in wl1273_fm_tx_set_spacing() argument
1359 struct wl1273_core *core = radio->core; in wl1273_fm_tx_set_spacing()
1365 radio->spacing = 100; in wl1273_fm_tx_set_spacing()
1369 radio->spacing = 50; in wl1273_fm_tx_set_spacing()
1373 radio->spacing = 100; in wl1273_fm_tx_set_spacing()
1377 radio->spacing = 200; in wl1273_fm_tx_set_spacing()
1385 struct wl1273_device *radio = ctrl->priv; in wl1273_fm_g_volatile_ctrl() local
1386 struct wl1273_core *core = radio->core; in wl1273_fm_g_volatile_ctrl()
1388 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_g_volatile_ctrl()
1395 ctrl->val = wl1273_fm_get_tx_ctune(radio); in wl1273_fm_g_volatile_ctrl()
1399 dev_warn(radio->dev, "%s: Unknown IOCTL: %d\n", in wl1273_fm_g_volatile_ctrl()
1422 struct wl1273_device *radio = to_radio(ctrl); in wl1273_fm_vidioc_s_ctrl() local
1423 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_ctrl()
1426 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_ctrl()
1451 r = wl1273_fm_set_mode(radio, WL1273_MODE_OFF); in wl1273_fm_vidioc_s_ctrl()
1457 r = wl1273_fm_set_preemphasis(radio, ctrl->val); in wl1273_fm_vidioc_s_ctrl()
1461 r = wl1273_fm_set_tx_power(radio, ctrl->val); in wl1273_fm_vidioc_s_ctrl()
1465 dev_warn(radio->dev, "%s: Unknown IOCTL: %d\n", in wl1273_fm_vidioc_s_ctrl()
1470 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_ctrl()
1477 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_g_audio() local
1479 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_g_audio()
1493 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_audio() local
1495 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_audio()
1509 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_g_tuner() local
1510 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_tuner()
1514 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_g_tuner()
1529 if (radio->stereo) in wl1273_fm_vidioc_g_tuner()
1554 dev_dbg(radio->dev, "Signal: %d\n", tuner->signal); in wl1273_fm_vidioc_g_tuner()
1573 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_tuner() local
1574 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_tuner()
1577 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_tuner()
1578 dev_dbg(radio->dev, "tuner->index: %d\n", tuner->index); in wl1273_fm_vidioc_s_tuner()
1579 dev_dbg(radio->dev, "tuner->name: %s\n", tuner->name); in wl1273_fm_vidioc_s_tuner()
1580 dev_dbg(radio->dev, "tuner->capability: 0x%04x\n", tuner->capability); in wl1273_fm_vidioc_s_tuner()
1581 dev_dbg(radio->dev, "tuner->rxsubchans: 0x%04x\n", tuner->rxsubchans); in wl1273_fm_vidioc_s_tuner()
1582 dev_dbg(radio->dev, "tuner->rangelow: %d\n", tuner->rangelow); in wl1273_fm_vidioc_s_tuner()
1583 dev_dbg(radio->dev, "tuner->rangehigh: %d\n", tuner->rangehigh); in wl1273_fm_vidioc_s_tuner()
1591 r = wl1273_fm_set_mode(radio, WL1273_MODE_RX); in wl1273_fm_vidioc_s_tuner()
1596 r = wl1273_fm_set_rds(radio, WL1273_RDS_ON); in wl1273_fm_vidioc_s_tuner()
1598 r = wl1273_fm_set_rds(radio, WL1273_RDS_OFF); in wl1273_fm_vidioc_s_tuner()
1601 dev_warn(radio->dev, "%s: RDS fails: %d\n", __func__, r); in wl1273_fm_vidioc_s_tuner()
1606 dev_warn(radio->dev, "%s: MOST_MODE fails: %d\n", in wl1273_fm_vidioc_s_tuner()
1610 radio->stereo = false; in wl1273_fm_vidioc_s_tuner()
1614 dev_warn(radio->dev, "%s: MOST_MODE fails: %d\n", in wl1273_fm_vidioc_s_tuner()
1618 radio->stereo = true; in wl1273_fm_vidioc_s_tuner()
1620 dev_err(radio->dev, "%s: tuner->audmode: %d\n", in wl1273_fm_vidioc_s_tuner()
1635 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_g_frequency() local
1636 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_frequency()
1638 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_g_frequency()
1644 freq->frequency = WL1273_FREQ(wl1273_fm_get_freq(radio)); in wl1273_fm_vidioc_g_frequency()
1654 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_frequency() local
1655 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_frequency()
1658 dev_dbg(radio->dev, "%s: %d\n", __func__, freq->frequency); in wl1273_fm_vidioc_s_frequency()
1661 dev_dbg(radio->dev, in wl1273_fm_vidioc_s_frequency()
1670 dev_dbg(radio->dev, "freq: %d\n", freq->frequency); in wl1273_fm_vidioc_s_frequency()
1672 r = wl1273_fm_set_rx_freq(radio, in wl1273_fm_vidioc_s_frequency()
1675 dev_warn(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_vidioc_s_frequency()
1678 r = wl1273_fm_set_tx_freq(radio, in wl1273_fm_vidioc_s_frequency()
1681 dev_warn(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_vidioc_s_frequency()
1687 dev_dbg(radio->dev, "wl1273_vidioc_s_frequency: DONE\n"); in wl1273_fm_vidioc_s_frequency()
1696 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_hw_freq_seek() local
1697 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_hw_freq_seek()
1700 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_hw_freq_seek()
1711 r = wl1273_fm_set_mode(radio, WL1273_MODE_RX); in wl1273_fm_vidioc_s_hw_freq_seek()
1715 r = wl1273_fm_tx_set_spacing(radio, seek->spacing); in wl1273_fm_vidioc_s_hw_freq_seek()
1717 dev_warn(radio->dev, "HW seek failed: %d\n", r); in wl1273_fm_vidioc_s_hw_freq_seek()
1719 r = wl1273_fm_set_seek(radio, seek->wrap_around, seek->seek_upward, in wl1273_fm_vidioc_s_hw_freq_seek()
1722 dev_warn(radio->dev, "HW seek failed: %d\n", r); in wl1273_fm_vidioc_s_hw_freq_seek()
1732 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_s_modulator() local
1733 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_modulator()
1736 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_s_modulator()
1744 r = wl1273_fm_set_mode(radio, WL1273_MODE_TX); in wl1273_fm_vidioc_s_modulator()
1749 r = wl1273_fm_set_rds(radio, WL1273_RDS_ON); in wl1273_fm_vidioc_s_modulator()
1751 r = wl1273_fm_set_rds(radio, WL1273_RDS_OFF); in wl1273_fm_vidioc_s_modulator()
1759 dev_warn(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_vidioc_s_modulator()
1770 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_g_modulator() local
1771 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_modulator()
1775 dev_dbg(radio->dev, "%s\n", __func__); in wl1273_fm_vidioc_g_modulator()
1801 if (radio->rds_on) in wl1273_fm_vidioc_g_modulator()
1811 struct wl1273_device *radio = video_get_drvdata(video_devdata(file)); in wl1273_fm_vidioc_log_status() local
1812 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_log_status()
1813 struct device *dev = radio->dev; in wl1273_fm_vidioc_log_status()
1866 int bf = radio->rangelow; in wl1273_fm_vidioc_log_status()
1988 struct wl1273_device *radio = platform_get_drvdata(pdev); in wl1273_fm_radio_remove() local
1989 struct wl1273_core *core = radio->core; in wl1273_fm_radio_remove()
1993 free_irq(core->client->irq, radio); in wl1273_fm_radio_remove()
1996 v4l2_ctrl_handler_free(&radio->ctrl_handler); in wl1273_fm_radio_remove()
1997 video_unregister_device(&radio->videodev); in wl1273_fm_radio_remove()
1998 v4l2_device_unregister(&radio->v4l2dev); in wl1273_fm_radio_remove()
2006 struct wl1273_device *radio; in wl1273_fm_radio_probe() local
2018 radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL); in wl1273_fm_radio_probe()
2019 if (!radio) { in wl1273_fm_radio_probe()
2025 radio->buf_size = rds_buf * RDS_BLOCK_SIZE; in wl1273_fm_radio_probe()
2026 radio->buffer = devm_kzalloc(&pdev->dev, radio->buf_size, GFP_KERNEL); in wl1273_fm_radio_probe()
2027 if (!radio->buffer) { in wl1273_fm_radio_probe()
2033 radio->core = *core; in wl1273_fm_radio_probe()
2034 radio->irq_flags = WL1273_IRQ_MASK; in wl1273_fm_radio_probe()
2035 radio->dev = &radio->core->client->dev; in wl1273_fm_radio_probe()
2036 radio->rds_on = false; in wl1273_fm_radio_probe()
2037 radio->core->mode = WL1273_MODE_OFF; in wl1273_fm_radio_probe()
2038 radio->tx_power = 118; in wl1273_fm_radio_probe()
2039 radio->core->audio_mode = WL1273_AUDIO_ANALOG; in wl1273_fm_radio_probe()
2040 radio->band = WL1273_BAND_OTHER; in wl1273_fm_radio_probe()
2041 radio->core->i2s_mode = WL1273_I2S_DEF_MODE; in wl1273_fm_radio_probe()
2042 radio->core->channel_number = 2; in wl1273_fm_radio_probe()
2043 radio->core->volume = WL1273_DEFAULT_VOLUME; in wl1273_fm_radio_probe()
2044 radio->rx_frequency = WL1273_BAND_OTHER_LOW; in wl1273_fm_radio_probe()
2045 radio->tx_frequency = WL1273_BAND_OTHER_HIGH; in wl1273_fm_radio_probe()
2046 radio->rangelow = WL1273_BAND_OTHER_LOW; in wl1273_fm_radio_probe()
2047 radio->rangehigh = WL1273_BAND_OTHER_HIGH; in wl1273_fm_radio_probe()
2048 radio->stereo = true; in wl1273_fm_radio_probe()
2049 radio->bus_type = "I2C"; in wl1273_fm_radio_probe()
2051 if (radio->core->pdata->request_resources) { in wl1273_fm_radio_probe()
2052 r = radio->core->pdata->request_resources(radio->core->client); in wl1273_fm_radio_probe()
2054 dev_err(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_radio_probe()
2059 dev_dbg(radio->dev, "irq: %d\n", radio->core->client->irq); in wl1273_fm_radio_probe()
2061 r = request_threaded_irq(radio->core->client->irq, NULL, in wl1273_fm_radio_probe()
2064 "wl1273-fm", radio); in wl1273_fm_radio_probe()
2066 dev_err(radio->dev, WL1273_FM_DRIVER_NAME in wl1273_fm_radio_probe()
2071 dev_err(radio->dev, WL1273_FM_DRIVER_NAME ": Core WL1273 IRQ" in wl1273_fm_radio_probe()
2077 init_completion(&radio->busy); in wl1273_fm_radio_probe()
2078 init_waitqueue_head(&radio->read_queue); in wl1273_fm_radio_probe()
2080 radio->write_buf = devm_kzalloc(&pdev->dev, 256, GFP_KERNEL); in wl1273_fm_radio_probe()
2081 if (!radio->write_buf) { in wl1273_fm_radio_probe()
2086 radio->dev = &pdev->dev; in wl1273_fm_radio_probe()
2087 radio->v4l2dev.ctrl_handler = &radio->ctrl_handler; in wl1273_fm_radio_probe()
2088 radio->rds_users = 0; in wl1273_fm_radio_probe()
2090 r = v4l2_device_register(&pdev->dev, &radio->v4l2dev); in wl1273_fm_radio_probe()
2097 radio->videodev = wl1273_viddev_template; in wl1273_fm_radio_probe()
2099 radio->videodev.v4l2_dev = &radio->v4l2dev; in wl1273_fm_radio_probe()
2101 v4l2_ctrl_handler_init(&radio->ctrl_handler, 6); in wl1273_fm_radio_probe()
2104 v4l2_ctrl_new_std(&radio->ctrl_handler, &wl1273_ctrl_ops, in wl1273_fm_radio_probe()
2108 v4l2_ctrl_new_std(&radio->ctrl_handler, &wl1273_ctrl_ops, in wl1273_fm_radio_probe()
2111 v4l2_ctrl_new_std_menu(&radio->ctrl_handler, &wl1273_ctrl_ops, in wl1273_fm_radio_probe()
2116 v4l2_ctrl_new_std(&radio->ctrl_handler, &wl1273_ctrl_ops, in wl1273_fm_radio_probe()
2119 ctrl = v4l2_ctrl_new_std(&radio->ctrl_handler, &wl1273_ctrl_ops, in wl1273_fm_radio_probe()
2125 if (radio->ctrl_handler.error) { in wl1273_fm_radio_probe()
2126 r = radio->ctrl_handler.error; in wl1273_fm_radio_probe()
2131 video_set_drvdata(&radio->videodev, radio); in wl1273_fm_radio_probe()
2132 platform_set_drvdata(pdev, radio); in wl1273_fm_radio_probe()
2135 r = video_register_device(&radio->videodev, VFL_TYPE_RADIO, radio_nr); in wl1273_fm_radio_probe()
2145 v4l2_ctrl_handler_free(&radio->ctrl_handler); in wl1273_fm_radio_probe()
2146 v4l2_device_unregister(&radio->v4l2dev); in wl1273_fm_radio_probe()
2148 free_irq(radio->core->client->irq, radio); in wl1273_fm_radio_probe()
2150 radio->core->pdata->free_resources(); in wl1273_fm_radio_probe()