• Home
  • Raw
  • Download

Lines Matching refs:radio

337 	struct si476x_radio *radio = video_drvdata(file);  in si476x_radio_querycap()  local
339 strlcpy(capability->driver, radio->v4l2dev.name, in si476x_radio_querycap()
343 "platform:%s", radio->v4l2dev.name); in si476x_radio_querycap()
349 si476x_core_lock(radio->core); in si476x_radio_querycap()
350 if (!si476x_core_is_a_secondary_tuner(radio->core)) in si476x_radio_querycap()
353 si476x_core_unlock(radio->core); in si476x_radio_querycap()
364 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_enum_freq_bands() local
369 switch (radio->core->chip_id) { in si476x_radio_enum_freq_bands()
402 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_g_tuner() local
424 si476x_core_lock(radio->core); in si476x_radio_g_tuner()
426 if (si476x_core_is_a_secondary_tuner(radio->core)) { in si476x_radio_g_tuner()
430 } else if (si476x_core_has_am(radio->core)) { in si476x_radio_g_tuner()
431 if (si476x_core_is_a_primary_tuner(radio->core)) in si476x_radio_g_tuner()
453 tuner->audmode = radio->audmode; in si476x_radio_g_tuner()
458 err = radio->ops->rsq_status(radio->core, in si476x_radio_g_tuner()
469 si476x_core_unlock(radio->core); in si476x_radio_g_tuner()
477 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_s_tuner() local
484 radio->audmode = tuner->audmode; in si476x_radio_s_tuner()
486 radio->audmode = V4L2_TUNER_MODE_STEREO; in si476x_radio_s_tuner()
491 static int si476x_radio_init_vtable(struct si476x_radio *radio, in si476x_radio_init_vtable() argument
518 radio->ops = &fm_ops; in si476x_radio_init_vtable()
522 radio->ops = &am_ops; in si476x_radio_init_vtable()
530 static int si476x_radio_pretune(struct si476x_radio *radio, in si476x_radio_pretune() argument
546 args.freq = v4l2_to_si476x(radio->core, in si476x_radio_pretune()
548 retval = radio->ops->tune_freq(radio->core, &args); in si476x_radio_pretune()
551 args.freq = v4l2_to_si476x(radio->core, in si476x_radio_pretune()
553 retval = radio->ops->tune_freq(radio->core, &args); in si476x_radio_pretune()
562 static int si476x_radio_do_post_powerup_init(struct si476x_radio *radio, in si476x_radio_do_post_powerup_init() argument
568 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
574 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
580 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
590 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
596 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
603 if (si476x_core_has_diversity(radio->core)) { in si476x_radio_do_post_powerup_init()
604 err = si476x_core_cmd_fm_phase_diversity(radio->core, in si476x_radio_do_post_powerup_init()
605 radio->core->diversity_mode); in si476x_radio_do_post_powerup_init()
610 err = regcache_sync_region(radio->core->regmap, in si476x_radio_do_post_powerup_init()
617 return si476x_radio_init_vtable(radio, func); in si476x_radio_do_post_powerup_init()
621 static int si476x_radio_change_func(struct si476x_radio *radio, in si476x_radio_change_func() argument
631 if (func == radio->core->power_up_parameters.func) in si476x_radio_change_func()
635 err = si476x_core_stop(radio->core, soft); in si476x_radio_change_func()
642 err = si476x_core_stop(radio->core, soft); in si476x_radio_change_func()
649 radio->core->power_up_parameters.func = func; in si476x_radio_change_func()
651 err = si476x_core_start(radio->core, soft); in si476x_radio_change_func()
663 return si476x_radio_do_post_powerup_init(radio, func); in si476x_radio_change_func()
670 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_g_frequency() local
676 si476x_core_lock(radio->core); in si476x_radio_g_frequency()
678 if (radio->ops->rsq_status) { in si476x_radio_g_frequency()
688 err = radio->ops->rsq_status(radio->core, &args, &report); in si476x_radio_g_frequency()
690 f->frequency = si476x_to_v4l2(radio->core, in si476x_radio_g_frequency()
696 si476x_core_unlock(radio->core); in si476x_radio_g_frequency()
707 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_s_frequency() local
720 si476x_core_lock(radio->core); in si476x_radio_s_frequency()
728 (!si476x_core_has_am(radio->core) || in si476x_radio_s_frequency()
729 si476x_core_is_a_secondary_tuner(radio->core))) { in si476x_radio_s_frequency()
734 err = si476x_radio_change_func(radio, func); in si476x_radio_s_frequency()
741 args.freq = v4l2_to_si476x(radio->core, freq); in si476x_radio_s_frequency()
746 err = radio->ops->tune_freq(radio->core, &args); in si476x_radio_s_frequency()
749 si476x_core_unlock(radio->core); in si476x_radio_s_frequency()
759 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_s_hw_freq_seek() local
768 si476x_core_lock(radio->core); in si476x_radio_s_hw_freq_seek()
771 err = regmap_read(radio->core->regmap, in si476x_radio_s_hw_freq_seek()
775 rangelow = si476x_to_v4l2(radio->core, rangelow); in si476x_radio_s_hw_freq_seek()
780 err = regmap_read(radio->core->regmap, in si476x_radio_s_hw_freq_seek()
784 rangehigh = si476x_to_v4l2(radio->core, rangehigh); in si476x_radio_s_hw_freq_seek()
798 } else if (si476x_core_has_am(radio->core) && in si476x_radio_s_hw_freq_seek()
807 err = si476x_radio_change_func(radio, func); in si476x_radio_s_hw_freq_seek()
812 err = regmap_write(radio->core->regmap, in si476x_radio_s_hw_freq_seek()
814 v4l2_to_si476x(radio->core, in si476x_radio_s_hw_freq_seek()
820 err = regmap_write(radio->core->regmap, in si476x_radio_s_hw_freq_seek()
822 v4l2_to_si476x(radio->core, in si476x_radio_s_hw_freq_seek()
828 err = regmap_write(radio->core->regmap, in si476x_radio_s_hw_freq_seek()
830 v4l2_to_si476x(radio->core, in si476x_radio_s_hw_freq_seek()
836 err = radio->ops->seek_start(radio->core, in si476x_radio_s_hw_freq_seek()
840 si476x_core_unlock(radio->core); in si476x_radio_s_hw_freq_seek()
850 struct si476x_radio *radio = v4l2_ctrl_handler_to_radio(ctrl->handler); in si476x_radio_g_volatile_ctrl() local
852 si476x_core_lock(radio->core); in si476x_radio_g_volatile_ctrl()
856 if (si476x_core_has_diversity(radio->core)) { in si476x_radio_g_volatile_ctrl()
857 if (radio->ops->phase_diversity) { in si476x_radio_g_volatile_ctrl()
858 retval = radio->ops->phase_div_status(radio->core); in si476x_radio_g_volatile_ctrl()
876 si476x_core_unlock(radio->core); in si476x_radio_g_volatile_ctrl()
885 struct si476x_radio *radio = v4l2_ctrl_handler_to_radio(ctrl->handler); in si476x_radio_s_ctrl() local
887 si476x_core_lock(radio->core); in si476x_radio_s_ctrl()
891 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
899 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
905 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
911 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
922 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
927 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
932 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
942 if (si476x_core_is_in_am_receiver_mode(radio->core)) in si476x_radio_s_ctrl()
943 regcache_cache_only(radio->core->regmap, true); in si476x_radio_s_ctrl()
946 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
948 radio->core->rds_fifo_depth); in si476x_radio_s_ctrl()
952 if (radio->core->client->irq) { in si476x_radio_s_ctrl()
953 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
961 retval = si476x_core_cmd_fm_rds_status(radio->core, in si476x_radio_s_ctrl()
969 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
974 retval = regmap_update_bits(radio->core->regmap, in si476x_radio_s_ctrl()
980 if (si476x_core_is_in_am_receiver_mode(radio->core)) in si476x_radio_s_ctrl()
981 regcache_cache_only(radio->core->regmap, false); in si476x_radio_s_ctrl()
984 retval = regmap_write(radio->core->regmap, in si476x_radio_s_ctrl()
992 if (mode == radio->core->diversity_mode) { in si476x_radio_s_ctrl()
997 if (si476x_core_is_in_am_receiver_mode(radio->core)) { in si476x_radio_s_ctrl()
1002 radio->core->diversity_mode = mode; in si476x_radio_s_ctrl()
1005 retval = radio->ops->phase_diversity(radio->core, mode); in si476x_radio_s_ctrl()
1007 radio->core->diversity_mode = mode; in si476x_radio_s_ctrl()
1016 si476x_core_unlock(radio->core); in si476x_radio_s_ctrl()
1027 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_g_register() local
1029 si476x_core_lock(radio->core); in si476x_radio_g_register()
1031 err = regmap_read(radio->core->regmap, in si476x_radio_g_register()
1034 si476x_core_unlock(radio->core); in si476x_radio_g_register()
1043 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_s_register() local
1045 si476x_core_lock(radio->core); in si476x_radio_s_register()
1046 err = regmap_write(radio->core->regmap, in si476x_radio_s_register()
1049 si476x_core_unlock(radio->core); in si476x_radio_s_register()
1057 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_fops_open() local
1065 si476x_core_lock(radio->core); in si476x_radio_fops_open()
1066 err = si476x_core_set_power_state(radio->core, in si476x_radio_fops_open()
1071 err = si476x_radio_do_post_powerup_init(radio, in si476x_radio_fops_open()
1072 radio->core->power_up_parameters.func); in si476x_radio_fops_open()
1076 err = si476x_radio_pretune(radio, in si476x_radio_fops_open()
1077 radio->core->power_up_parameters.func); in si476x_radio_fops_open()
1081 si476x_core_unlock(radio->core); in si476x_radio_fops_open()
1083 v4l2_ctrl_handler_setup(&radio->ctrl_handler); in si476x_radio_fops_open()
1089 si476x_core_set_power_state(radio->core, in si476x_radio_fops_open()
1092 si476x_core_unlock(radio->core); in si476x_radio_fops_open()
1101 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_fops_release() local
1104 atomic_read(&radio->core->is_alive)) in si476x_radio_fops_release()
1105 si476x_core_set_power_state(radio->core, in si476x_radio_fops_release()
1120 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_fops_read() local
1123 if (kfifo_is_empty(&radio->core->rds_fifo)) { in si476x_radio_fops_read()
1127 rval = wait_event_interruptible(radio->core->rds_read_queue, in si476x_radio_fops_read()
1128 (!kfifo_is_empty(&radio->core->rds_fifo) || in si476x_radio_fops_read()
1129 !atomic_read(&radio->core->is_alive))); in si476x_radio_fops_read()
1133 if (!atomic_read(&radio->core->is_alive)) in si476x_radio_fops_read()
1137 fifo_len = kfifo_len(&radio->core->rds_fifo); in si476x_radio_fops_read()
1139 if (kfifo_to_user(&radio->core->rds_fifo, buf, in si476x_radio_fops_read()
1142 dev_warn(&radio->videodev.dev, in si476x_radio_fops_read()
1155 struct si476x_radio *radio = video_drvdata(file); in si476x_radio_fops_poll() local
1160 if (atomic_read(&radio->core->is_alive)) in si476x_radio_fops_poll()
1161 poll_wait(file, &radio->core->rds_read_queue, pts); in si476x_radio_fops_poll()
1163 if (!atomic_read(&radio->core->is_alive)) in si476x_radio_fops_poll()
1166 if (!kfifo_is_empty(&radio->core->rds_fifo)) in si476x_radio_fops_poll()
1216 struct si476x_radio *radio = file->private_data; in si476x_radio_read_acf_blob() local
1219 si476x_core_lock(radio->core); in si476x_radio_read_acf_blob()
1220 if (radio->ops->acf_status) in si476x_radio_read_acf_blob()
1221 err = radio->ops->acf_status(radio->core, &report); in si476x_radio_read_acf_blob()
1224 si476x_core_unlock(radio->core); in si476x_radio_read_acf_blob()
1244 struct si476x_radio *radio = file->private_data; in si476x_radio_read_rds_blckcnt_blob() local
1247 si476x_core_lock(radio->core); in si476x_radio_read_rds_blckcnt_blob()
1248 if (radio->ops->rds_blckcnt) in si476x_radio_read_rds_blckcnt_blob()
1249 err = radio->ops->rds_blckcnt(radio->core, true, in si476x_radio_read_rds_blckcnt_blob()
1253 si476x_core_unlock(radio->core); in si476x_radio_read_rds_blckcnt_blob()
1273 struct si476x_radio *radio = file->private_data; in si476x_radio_read_agc_blob() local
1276 si476x_core_lock(radio->core); in si476x_radio_read_agc_blob()
1277 if (radio->ops->rds_blckcnt) in si476x_radio_read_agc_blob()
1278 err = radio->ops->agc_status(radio->core, &report); in si476x_radio_read_agc_blob()
1281 si476x_core_unlock(radio->core); in si476x_radio_read_agc_blob()
1301 struct si476x_radio *radio = file->private_data; in si476x_radio_read_rsq_blob() local
1311 si476x_core_lock(radio->core); in si476x_radio_read_rsq_blob()
1312 if (radio->ops->rds_blckcnt) in si476x_radio_read_rsq_blob()
1313 err = radio->ops->rsq_status(radio->core, &args, &report); in si476x_radio_read_rsq_blob()
1316 si476x_core_unlock(radio->core); in si476x_radio_read_rsq_blob()
1336 struct si476x_radio *radio = file->private_data; in si476x_radio_read_rsq_primary_blob() local
1346 si476x_core_lock(radio->core); in si476x_radio_read_rsq_primary_blob()
1347 if (radio->ops->rds_blckcnt) in si476x_radio_read_rsq_primary_blob()
1348 err = radio->ops->rsq_status(radio->core, &args, &report); in si476x_radio_read_rsq_primary_blob()
1351 si476x_core_unlock(radio->core); in si476x_radio_read_rsq_primary_blob()
1367 static int si476x_radio_init_debugfs(struct si476x_radio *radio) in si476x_radio_init_debugfs() argument
1372 dentry = debugfs_create_dir(dev_name(radio->v4l2dev.dev), NULL); in si476x_radio_init_debugfs()
1377 radio->debugfs = dentry; in si476x_radio_init_debugfs()
1380 radio->debugfs, radio, &radio_acf_fops); in si476x_radio_init_debugfs()
1387 radio->debugfs, radio, in si476x_radio_init_debugfs()
1395 radio->debugfs, radio, &radio_agc_fops); in si476x_radio_init_debugfs()
1402 radio->debugfs, radio, &radio_rsq_fops); in si476x_radio_init_debugfs()
1409 radio->debugfs, radio, in si476x_radio_init_debugfs()
1418 debugfs_remove_recursive(radio->debugfs); in si476x_radio_init_debugfs()
1424 static int si476x_radio_add_new_custom(struct si476x_radio *radio, in si476x_radio_add_new_custom() argument
1430 ctrl = v4l2_ctrl_new_custom(&radio->ctrl_handler, in si476x_radio_add_new_custom()
1433 rval = radio->ctrl_handler.error; in si476x_radio_add_new_custom()
1435 dev_err(radio->v4l2dev.dev, in si476x_radio_add_new_custom()
1445 struct si476x_radio *radio; in si476x_radio_probe() local
1450 radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL); in si476x_radio_probe()
1451 if (!radio) in si476x_radio_probe()
1454 radio->core = i2c_mfd_cell_to_core(&pdev->dev); in si476x_radio_probe()
1456 v4l2_device_set_name(&radio->v4l2dev, DRIVER_NAME, &instance); in si476x_radio_probe()
1458 rval = v4l2_device_register(&pdev->dev, &radio->v4l2dev); in si476x_radio_probe()
1464 memcpy(&radio->videodev, &si476x_viddev_template, in si476x_radio_probe()
1467 radio->videodev.v4l2_dev = &radio->v4l2dev; in si476x_radio_probe()
1468 radio->videodev.ioctl_ops = &si4761_ioctl_ops; in si476x_radio_probe()
1470 video_set_drvdata(&radio->videodev, radio); in si476x_radio_probe()
1471 platform_set_drvdata(pdev, radio); in si476x_radio_probe()
1474 radio->v4l2dev.ctrl_handler = &radio->ctrl_handler; in si476x_radio_probe()
1475 v4l2_ctrl_handler_init(&radio->ctrl_handler, in si476x_radio_probe()
1478 if (si476x_core_has_am(radio->core)) { in si476x_radio_probe()
1479 ctrl = v4l2_ctrl_new_std_menu(&radio->ctrl_handler, in si476x_radio_probe()
1484 rval = radio->ctrl_handler.error; in si476x_radio_probe()
1491 rval = si476x_radio_add_new_custom(radio, in si476x_radio_probe()
1497 rval = si476x_radio_add_new_custom(radio, SI476X_IDX_RSSI_THRESHOLD); in si476x_radio_probe()
1501 rval = si476x_radio_add_new_custom(radio, SI476X_IDX_SNR_THRESHOLD); in si476x_radio_probe()
1505 rval = si476x_radio_add_new_custom(radio, SI476X_IDX_MAX_TUNE_ERROR); in si476x_radio_probe()
1509 ctrl = v4l2_ctrl_new_std_menu(&radio->ctrl_handler, in si476x_radio_probe()
1513 rval = radio->ctrl_handler.error; in si476x_radio_probe()
1520 ctrl = v4l2_ctrl_new_std(&radio->ctrl_handler, &si476x_ctrl_ops, in si476x_radio_probe()
1523 rval = radio->ctrl_handler.error; in si476x_radio_probe()
1530 if (si476x_core_has_diversity(radio->core)) { in si476x_radio_probe()
1532 si476x_phase_diversity_mode_to_idx(radio->core->diversity_mode); in si476x_radio_probe()
1533 rval = si476x_radio_add_new_custom(radio, SI476X_IDX_DIVERSITY_MODE); in si476x_radio_probe()
1537 rval = si476x_radio_add_new_custom(radio, SI476X_IDX_INTERCHIP_LINK); in si476x_radio_probe()
1543 rval = video_register_device(&radio->videodev, VFL_TYPE_RADIO, -1); in si476x_radio_probe()
1549 rval = si476x_radio_init_debugfs(radio); in si476x_radio_probe()
1557 v4l2_ctrl_handler_free(radio->videodev.ctrl_handler); in si476x_radio_probe()
1563 struct si476x_radio *radio = platform_get_drvdata(pdev); in si476x_radio_remove() local
1565 v4l2_ctrl_handler_free(radio->videodev.ctrl_handler); in si476x_radio_remove()
1566 video_unregister_device(&radio->videodev); in si476x_radio_remove()
1567 v4l2_device_unregister(&radio->v4l2dev); in si476x_radio_remove()
1568 debugfs_remove_recursive(radio->debugfs); in si476x_radio_remove()