Lines Matching full:core

24 #include <linux/mfd/wl1273-core.h>
89 struct wl1273_core *core; member
107 static int wl1273_fm_write_fw(struct wl1273_core *core, in wl1273_fm_write_fw() argument
110 struct i2c_client *client = core->client; in wl1273_fm_write_fw()
145 struct wl1273_core *core = radio->core; in wl1273_fm_rds() local
146 struct i2c_client *client = core->client; in wl1273_fm_rds()
166 if (core->mode != WL1273_MODE_RX) in wl1273_fm_rds()
169 r = core->read(core, WL1273_RDS_SYNC_GET, &val); in wl1273_fm_rds()
233 struct wl1273_core *core = radio->core; in wl1273_fm_irq_thread_handler() local
237 r = core->read(core, WL1273_FLAG_GET, &flags); in wl1273_fm_irq_thread_handler()
261 r = core->read(core, WL1273_RSSI_LVL_GET, &level); in wl1273_fm_irq_thread_handler()
301 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_irq_thread_handler()
302 r = core->write(core, WL1273_TUNER_MODE_SET, in wl1273_fm_irq_thread_handler()
311 r = core->read(core, WL1273_FREQ_SET, &freq); in wl1273_fm_irq_thread_handler()
330 r = core->read(core, WL1273_CHANL_SET, &freq); in wl1273_fm_irq_thread_handler()
340 core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_irq_thread_handler()
348 struct wl1273_core *core = radio->core; in wl1273_fm_set_tx_freq() local
374 r = core->write(core, WL1273_CHANL_SET, freq / 10); in wl1273_fm_set_tx_freq()
388 r = core->write(core, WL1273_POWER_ENB_SET, 1); in wl1273_fm_set_tx_freq()
407 struct wl1273_core *core = radio->core; in wl1273_fm_set_rx_freq() local
428 core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_rx_freq()
435 r = core->write(core, WL1273_FREQ_SET, f); in wl1273_fm_set_rx_freq()
441 r = core->write(core, WL1273_TUNER_MODE_SET, TUNER_MODE_PRESET); in wl1273_fm_set_rx_freq()
465 struct wl1273_core *core = radio->core; in wl1273_fm_get_freq() local
470 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_get_freq()
471 r = core->read(core, WL1273_FREQ_SET, &f); in wl1273_fm_get_freq()
481 r = core->read(core, WL1273_CHANL_SET, &f); in wl1273_fm_get_freq()
501 struct wl1273_core *core = radio->core; in wl1273_fm_upload_firmware_patch() local
525 r = wl1273_fm_write_fw(core, ptr + 1, packet_num); in wl1273_fm_upload_firmware_patch()
532 core->write(core, WL1273_RESET, 0); in wl1273_fm_upload_firmware_patch()
542 struct wl1273_core *core = radio->core; in wl1273_fm_stop() local
544 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_stop()
545 int r = core->write(core, WL1273_POWER_SET, in wl1273_fm_stop()
550 } else if (core->mode == WL1273_MODE_TX) { in wl1273_fm_stop()
551 int r = core->write(core, WL1273_PUPD_SET, in wl1273_fm_stop()
558 if (core->pdata->disable) { in wl1273_fm_stop()
559 core->pdata->disable(); in wl1273_fm_stop()
568 struct wl1273_core *core = radio->core; in wl1273_fm_start() local
569 struct wl1273_fm_platform_data *pdata = core->pdata; in wl1273_fm_start()
573 if (pdata->enable && core->mode == WL1273_MODE_OFF) { in wl1273_fm_start()
587 r = core->write(core, WL1273_POWER_SET, val); in wl1273_fm_start()
591 r = core->write(core, WL1273_POWER_SET, val); in wl1273_fm_start()
604 r = core->write(core, WL1273_PUPD_SET, WL1273_PUPD_SET_ON); in wl1273_fm_start()
607 r = core->write(core, WL1273_PUPD_SET, in wl1273_fm_start()
616 r = core->write(core, WL1273_RDS_DATA_ENB, 1); in wl1273_fm_start()
618 r = core->write(core, WL1273_RDS_DATA_ENB, 0); in wl1273_fm_start()
623 if (core->mode == WL1273_MODE_OFF) { in wl1273_fm_start()
638 r = core->write(core, WL1273_POWER_SET, val); in wl1273_fm_start()
644 r = core->write(core, WL1273_PUPD_SET, in wl1273_fm_start()
664 struct wl1273_core *core = radio->core; in wl1273_fm_suspend() local
668 if (core->mode == WL1273_MODE_RX) in wl1273_fm_suspend()
669 r = core->write(core, WL1273_POWER_SET, in wl1273_fm_suspend()
671 else if (core->mode == WL1273_MODE_TX) in wl1273_fm_suspend()
672 r = core->write(core, WL1273_PUPD_SET, in wl1273_fm_suspend()
688 struct wl1273_core *core = radio->core; in wl1273_fm_set_mode() local
696 old_mode = core->mode; in wl1273_fm_set_mode()
712 core->mode = mode; in wl1273_fm_set_mode()
713 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_mode()
727 r = core->set_volume(core, core->volume); in wl1273_fm_set_mode()
734 core->volume); in wl1273_fm_set_mode()
745 r = core->set_audio(core, core->audio_mode); in wl1273_fm_set_mode()
755 core->mode = WL1273_MODE_OFF; in wl1273_fm_set_mode()
764 core->mode = WL1273_MODE_SUSPENDED; in wl1273_fm_set_mode()
775 core->mode = old_mode; in wl1273_fm_set_mode()
785 struct wl1273_core *core = radio->core; in wl1273_fm_set_seek() local
811 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_set_seek()
817 r = core->write(core, WL1273_SEARCH_LVL_SET, level); in wl1273_fm_set_seek()
821 r = core->write(core, WL1273_SEARCH_DIR_SET, dir); in wl1273_fm_set_seek()
825 r = core->write(core, WL1273_TUNER_MODE_SET, TUNER_MODE_AUTO_SEEK); in wl1273_fm_set_seek()
853 r = core->write(core, WL1273_TUNER_MODE_SET, TUNER_MODE_AUTO_SEEK); in wl1273_fm_set_seek()
869 struct wl1273_core *core = radio->core; in wl1273_fm_get_tx_ctune() local
874 if (core->mode == WL1273_MODE_OFF || in wl1273_fm_get_tx_ctune()
875 core->mode == WL1273_MODE_SUSPENDED) in wl1273_fm_get_tx_ctune()
878 r = core->read(core, WL1273_READ_FMANT_TUNE_VALUE, &val); in wl1273_fm_get_tx_ctune()
899 struct wl1273_core *core = radio->core; in wl1273_fm_set_preemphasis() local
903 if (core->mode == WL1273_MODE_OFF || in wl1273_fm_set_preemphasis()
904 core->mode == WL1273_MODE_SUSPENDED) in wl1273_fm_set_preemphasis()
907 mutex_lock(&core->lock); in wl1273_fm_set_preemphasis()
924 r = core->write(core, WL1273_PREMPH_SET, em); in wl1273_fm_set_preemphasis()
931 mutex_unlock(&core->lock); in wl1273_fm_set_preemphasis()
937 struct wl1273_core *core = radio->core; in wl1273_fm_rds_on() local
944 r = core->write(core, WL1273_POWER_SET, in wl1273_fm_rds_on()
958 struct wl1273_core *core = radio->core; in wl1273_fm_rds_off() local
966 r = core->write(core, WL1273_INT_MASK_SET, radio->irq_flags); in wl1273_fm_rds_off()
975 r = core->write(core, WL1273_POWER_SET, WL1273_POWER_SET_FM); in wl1273_fm_rds_off()
991 struct wl1273_core *core = radio->core; in wl1273_fm_set_rds() local
993 if (core->mode == WL1273_MODE_OFF || in wl1273_fm_set_rds()
994 core->mode == WL1273_MODE_SUSPENDED) in wl1273_fm_set_rds()
998 r = core->write(core, WL1273_RDS_CNTRL_SET, 1); in wl1273_fm_set_rds()
1002 if (core->mode == WL1273_MODE_TX && new_mode == WL1273_RDS_OFF) { in wl1273_fm_set_rds()
1003 r = core->write(core, WL1273_RDS_DATA_ENB, 0); in wl1273_fm_set_rds()
1004 } else if (core->mode == WL1273_MODE_TX && new_mode == WL1273_RDS_ON) { in wl1273_fm_set_rds()
1005 r = core->write(core, WL1273_RDS_DATA_ENB, 1); in wl1273_fm_set_rds()
1006 } else if (core->mode == WL1273_MODE_RX && new_mode == WL1273_RDS_OFF) { in wl1273_fm_set_rds()
1008 } else if (core->mode == WL1273_MODE_RX && new_mode == WL1273_RDS_ON) { in wl1273_fm_set_rds()
1026 struct wl1273_core *core = radio->core; in wl1273_fm_fops_write() local
1032 if (core->mode != WL1273_MODE_TX) in wl1273_fm_fops_write()
1040 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_fops_write()
1058 core->write(core, WL1273_RDS_CONFIG_DATA_SET, val); in wl1273_fm_fops_write()
1069 core->write_data(core, radio->write_buf, val + 1); in wl1273_fm_fops_write()
1073 mutex_unlock(&core->lock); in wl1273_fm_fops_write()
1082 struct wl1273_core *core = radio->core; in wl1273_fm_fops_poll() local
1089 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_fops_poll()
1095 } else if (core->mode == WL1273_MODE_TX) { in wl1273_fm_fops_poll()
1105 struct wl1273_core *core = radio->core; in wl1273_fm_fops_open() local
1110 if (core->mode == WL1273_MODE_RX && radio->rds_on && in wl1273_fm_fops_open()
1112 dev_dbg(radio->dev, "%s: Mode: %d\n", __func__, core->mode); in wl1273_fm_fops_open()
1114 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_fops_open()
1119 r = core->write(core, WL1273_INT_MASK_SET, in wl1273_fm_fops_open()
1122 mutex_unlock(&core->lock); in wl1273_fm_fops_open()
1128 mutex_unlock(&core->lock); in wl1273_fm_fops_open()
1137 struct wl1273_core *core = radio->core; in wl1273_fm_fops_release() local
1145 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_fops_release()
1150 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_fops_release()
1151 r = core->write(core, in wl1273_fm_fops_release()
1155 mutex_unlock(&core->lock); in wl1273_fm_fops_release()
1159 mutex_unlock(&core->lock); in wl1273_fm_fops_release()
1174 struct wl1273_core *core = radio->core; in wl1273_fm_fops_read() local
1180 if (core->mode != WL1273_MODE_RX) in wl1273_fm_fops_read()
1188 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_fops_read()
1201 r = core->read(core, WL1273_RDS_SYNC_GET, &val); in wl1273_fm_fops_read()
1253 mutex_unlock(&core->lock); in wl1273_fm_fops_read()
1317 * @core: A pointer to the device struct.
1322 struct wl1273_core *core = radio->core; in wl1273_fm_set_tx_power() local
1325 if (core->mode == WL1273_MODE_OFF || in wl1273_fm_set_tx_power()
1326 core->mode == WL1273_MODE_SUSPENDED) in wl1273_fm_set_tx_power()
1329 mutex_lock(&core->lock); in wl1273_fm_set_tx_power()
1332 r = core->write(core, WL1273_POWER_LEV_SET, 122 - power); in wl1273_fm_set_tx_power()
1339 mutex_unlock(&core->lock); in wl1273_fm_set_tx_power()
1350 struct wl1273_core *core = radio->core; in wl1273_fm_tx_set_spacing() local
1354 r = core->write(core, WL1273_SCAN_SPACING_SET, in wl1273_fm_tx_set_spacing()
1358 r = core->write(core, WL1273_SCAN_SPACING_SET, in wl1273_fm_tx_set_spacing()
1362 r = core->write(core, WL1273_SCAN_SPACING_SET, in wl1273_fm_tx_set_spacing()
1366 r = core->write(core, WL1273_SCAN_SPACING_SET, in wl1273_fm_tx_set_spacing()
1377 struct wl1273_core *core = radio->core; in wl1273_fm_g_volatile_ctrl() local
1381 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_g_volatile_ctrl()
1395 mutex_unlock(&core->lock); in wl1273_fm_g_volatile_ctrl()
1414 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_ctrl() local
1421 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_s_ctrl()
1424 if (core->mode == WL1273_MODE_RX && ctrl->val) in wl1273_fm_vidioc_s_ctrl()
1425 r = core->write(core, in wl1273_fm_vidioc_s_ctrl()
1429 else if (core->mode == WL1273_MODE_RX) in wl1273_fm_vidioc_s_ctrl()
1430 r = core->write(core, in wl1273_fm_vidioc_s_ctrl()
1432 else if (core->mode == WL1273_MODE_TX && ctrl->val) in wl1273_fm_vidioc_s_ctrl()
1433 r = core->write(core, WL1273_MUTE, 1); in wl1273_fm_vidioc_s_ctrl()
1434 else if (core->mode == WL1273_MODE_TX) in wl1273_fm_vidioc_s_ctrl()
1435 r = core->write(core, WL1273_MUTE, 0); in wl1273_fm_vidioc_s_ctrl()
1437 mutex_unlock(&core->lock); in wl1273_fm_vidioc_s_ctrl()
1444 r = core->set_volume(core, core->volume); in wl1273_fm_vidioc_s_ctrl()
1501 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_tuner() local
1524 if (core->mode != WL1273_MODE_RX) in wl1273_fm_vidioc_g_tuner()
1527 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_g_tuner()
1530 r = core->read(core, WL1273_STEREO_GET, &val); in wl1273_fm_vidioc_g_tuner()
1539 r = core->read(core, WL1273_RSSI_LVL_GET, &val); in wl1273_fm_vidioc_g_tuner()
1548 r = core->read(core, WL1273_RDS_SYNC_GET, &val); in wl1273_fm_vidioc_g_tuner()
1555 mutex_unlock(&core->lock); in wl1273_fm_vidioc_g_tuner()
1564 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_tuner() local
1578 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_s_tuner()
1594 r = core->write(core, WL1273_MOST_MODE_SET, WL1273_RX_MONO); in wl1273_fm_vidioc_s_tuner()
1602 r = core->write(core, WL1273_MOST_MODE_SET, WL1273_RX_STEREO); in wl1273_fm_vidioc_s_tuner()
1617 mutex_unlock(&core->lock); in wl1273_fm_vidioc_s_tuner()
1626 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_frequency() local
1630 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_g_frequency()
1636 mutex_unlock(&core->lock); in wl1273_fm_vidioc_g_frequency()
1645 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_frequency() local
1656 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_s_frequency()
1659 if (core->mode == WL1273_MODE_RX) { in wl1273_fm_vidioc_s_frequency()
1675 mutex_unlock(&core->lock); in wl1273_fm_vidioc_s_frequency()
1687 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_hw_freq_seek() local
1695 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_s_hw_freq_seek()
1712 mutex_unlock(&core->lock); in wl1273_fm_vidioc_s_hw_freq_seek()
1720 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_s_modulator() local
1728 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_s_modulator()
1741 r = core->write(core, WL1273_MONO_SET, WL1273_TX_MONO); in wl1273_fm_vidioc_s_modulator()
1743 r = core->write(core, WL1273_MONO_SET, in wl1273_fm_vidioc_s_modulator()
1749 mutex_unlock(&core->lock); in wl1273_fm_vidioc_s_modulator()
1758 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_g_modulator() local
1773 if (core->mode != WL1273_MODE_TX) in wl1273_fm_vidioc_g_modulator()
1776 if (mutex_lock_interruptible(&core->lock)) in wl1273_fm_vidioc_g_modulator()
1779 r = core->read(core, WL1273_MONO_SET, &val); in wl1273_fm_vidioc_g_modulator()
1791 mutex_unlock(&core->lock); in wl1273_fm_vidioc_g_modulator()
1799 struct wl1273_core *core = radio->core; in wl1273_fm_vidioc_log_status() local
1806 if (core->mode == WL1273_MODE_OFF) { in wl1273_fm_vidioc_log_status()
1811 if (core->mode == WL1273_MODE_SUSPENDED) { in wl1273_fm_vidioc_log_status()
1816 r = core->read(core, WL1273_ASIC_ID_GET, &val); in wl1273_fm_vidioc_log_status()
1822 r = core->read(core, WL1273_ASIC_VER_GET, &val); in wl1273_fm_vidioc_log_status()
1828 r = core->read(core, WL1273_FIRM_VER_GET, &val); in wl1273_fm_vidioc_log_status()
1834 r = core->read(core, WL1273_BAND_SET, &val); in wl1273_fm_vidioc_log_status()
1840 if (core->mode == WL1273_MODE_TX) { in wl1273_fm_vidioc_log_status()
1841 r = core->read(core, WL1273_PUPD_SET, &val); in wl1273_fm_vidioc_log_status()
1847 r = core->read(core, WL1273_CHANL_SET, &val); in wl1273_fm_vidioc_log_status()
1852 } else if (core->mode == WL1273_MODE_RX) { in wl1273_fm_vidioc_log_status()
1855 r = core->read(core, WL1273_FREQ_SET, &val); in wl1273_fm_vidioc_log_status()
1861 r = core->read(core, WL1273_MOST_MODE_SET, &val); in wl1273_fm_vidioc_log_status()
1872 r = core->read(core, WL1273_MOST_BLEND_SET, &val); in wl1273_fm_vidioc_log_status()
1883 r = core->read(core, WL1273_STEREO_GET, &val); in wl1273_fm_vidioc_log_status()
1893 r = core->read(core, WL1273_RSSI_LVL_GET, &val); in wl1273_fm_vidioc_log_status()
1899 r = core->read(core, WL1273_POWER_SET, &val); in wl1273_fm_vidioc_log_status()
1905 r = core->read(core, WL1273_INT_MASK_SET, &val); in wl1273_fm_vidioc_log_status()
1911 r = core->read(core, WL1273_RDS_SYNC_GET, &val); in wl1273_fm_vidioc_log_status()
1923 r = core->read(core, WL1273_I2S_MODE_CONFIG_SET, &val); in wl1273_fm_vidioc_log_status()
1930 r = core->read(core, WL1273_VOLUME_SET, &val); in wl1273_fm_vidioc_log_status()
1975 struct wl1273_core *core = radio->core; in wl1273_fm_radio_remove() local
1979 free_irq(core->client->irq, radio); in wl1273_fm_radio_remove()
1980 core->pdata->free_resources(); in wl1273_fm_radio_remove()
1994 struct wl1273_core **core = pdev->dev.platform_data; in wl1273_fm_radio_probe() local
2001 if (!core) { in wl1273_fm_radio_probe()
2022 radio->core = *core; in wl1273_fm_radio_probe()
2024 radio->dev = &radio->core->client->dev; in wl1273_fm_radio_probe()
2026 radio->core->mode = WL1273_MODE_OFF; in wl1273_fm_radio_probe()
2028 radio->core->audio_mode = WL1273_AUDIO_ANALOG; in wl1273_fm_radio_probe()
2030 radio->core->i2s_mode = WL1273_I2S_DEF_MODE; in wl1273_fm_radio_probe()
2031 radio->core->channel_number = 2; in wl1273_fm_radio_probe()
2032 radio->core->volume = WL1273_DEFAULT_VOLUME; in wl1273_fm_radio_probe()
2040 if (radio->core->pdata->request_resources) { in wl1273_fm_radio_probe()
2041 r = radio->core->pdata->request_resources(radio->core->client); in wl1273_fm_radio_probe()
2048 dev_dbg(radio->dev, "irq: %d\n", radio->core->client->irq); in wl1273_fm_radio_probe()
2050 r = request_threaded_irq(radio->core->client->irq, NULL, in wl1273_fm_radio_probe()
2060 dev_err(radio->dev, WL1273_FM_DRIVER_NAME ": Core WL1273 IRQ" in wl1273_fm_radio_probe()
2140 free_irq(radio->core->client->irq, radio); in wl1273_fm_radio_probe()
2142 radio->core->pdata->free_resources(); in wl1273_fm_radio_probe()