Lines Matching refs:i2s
40 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_runtime_suspend() local
42 regcache_cache_only(i2s->regmap, true); in tegra30_i2s_runtime_suspend()
44 clk_disable_unprepare(i2s->clk_i2s); in tegra30_i2s_runtime_suspend()
51 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_runtime_resume() local
54 ret = clk_prepare_enable(i2s->clk_i2s); in tegra30_i2s_runtime_resume()
60 regcache_cache_only(i2s->regmap, false); in tegra30_i2s_runtime_resume()
68 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai); in tegra30_i2s_set_fmt() local
117 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); in tegra30_i2s_set_fmt()
128 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai); in tegra30_i2s_hw_params() local
146 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); in tegra30_i2s_hw_params()
157 ret = clk_set_rate(i2s->clk_i2s, i2sclock); in tegra30_i2s_hw_params()
168 regmap_write(i2s->regmap, TEGRA30_I2S_TIMING, val); in tegra30_i2s_hw_params()
189 i2s->soc_data->set_audio_cif(i2s->regmap, reg, &cif_conf); in tegra30_i2s_hw_params()
193 regmap_write(i2s->regmap, TEGRA30_I2S_OFFSET, val); in tegra30_i2s_hw_params()
198 static void tegra30_i2s_start_playback(struct tegra30_i2s *i2s) in tegra30_i2s_start_playback() argument
200 tegra30_ahub_enable_tx_fifo(i2s->playback_fifo_cif); in tegra30_i2s_start_playback()
201 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, in tegra30_i2s_start_playback()
206 static void tegra30_i2s_stop_playback(struct tegra30_i2s *i2s) in tegra30_i2s_stop_playback() argument
208 tegra30_ahub_disable_tx_fifo(i2s->playback_fifo_cif); in tegra30_i2s_stop_playback()
209 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, in tegra30_i2s_stop_playback()
213 static void tegra30_i2s_start_capture(struct tegra30_i2s *i2s) in tegra30_i2s_start_capture() argument
215 tegra30_ahub_enable_rx_fifo(i2s->capture_fifo_cif); in tegra30_i2s_start_capture()
216 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, in tegra30_i2s_start_capture()
221 static void tegra30_i2s_stop_capture(struct tegra30_i2s *i2s) in tegra30_i2s_stop_capture() argument
223 tegra30_ahub_disable_rx_fifo(i2s->capture_fifo_cif); in tegra30_i2s_stop_capture()
224 regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, in tegra30_i2s_stop_capture()
231 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai); in tegra30_i2s_trigger() local
238 tegra30_i2s_start_playback(i2s); in tegra30_i2s_trigger()
240 tegra30_i2s_start_capture(i2s); in tegra30_i2s_trigger()
246 tegra30_i2s_stop_playback(i2s); in tegra30_i2s_trigger()
248 tegra30_i2s_stop_capture(i2s); in tegra30_i2s_trigger()
259 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai); in tegra30_i2s_probe() local
261 dai->capture_dma_data = &i2s->capture_dma_data; in tegra30_i2s_probe()
262 dai->playback_dma_data = &i2s->playback_dma_data; in tegra30_i2s_probe()
368 struct tegra30_i2s *i2s; in tegra30_i2s_platform_probe() local
374 i2s = devm_kzalloc(&pdev->dev, sizeof(struct tegra30_i2s), GFP_KERNEL); in tegra30_i2s_platform_probe()
375 if (!i2s) { in tegra30_i2s_platform_probe()
379 dev_set_drvdata(&pdev->dev, i2s); in tegra30_i2s_platform_probe()
387 i2s->soc_data = (struct tegra30_i2s_soc_data *)match->data; in tegra30_i2s_platform_probe()
389 i2s->dai = tegra30_i2s_dai_template; in tegra30_i2s_platform_probe()
390 i2s->dai.name = dev_name(&pdev->dev); in tegra30_i2s_platform_probe()
398 i2s->playback_i2s_cif = cif_ids[0]; in tegra30_i2s_platform_probe()
399 i2s->capture_i2s_cif = cif_ids[1]; in tegra30_i2s_platform_probe()
401 i2s->clk_i2s = clk_get(&pdev->dev, NULL); in tegra30_i2s_platform_probe()
402 if (IS_ERR(i2s->clk_i2s)) { in tegra30_i2s_platform_probe()
404 ret = PTR_ERR(i2s->clk_i2s); in tegra30_i2s_platform_probe()
414 i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs, in tegra30_i2s_platform_probe()
416 if (IS_ERR(i2s->regmap)) { in tegra30_i2s_platform_probe()
418 ret = PTR_ERR(i2s->regmap); in tegra30_i2s_platform_probe()
421 regcache_cache_only(i2s->regmap, true); in tegra30_i2s_platform_probe()
430 i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in tegra30_i2s_platform_probe()
431 i2s->playback_dma_data.maxburst = 4; in tegra30_i2s_platform_probe()
432 ret = tegra30_ahub_allocate_tx_fifo(&i2s->playback_fifo_cif, in tegra30_i2s_platform_probe()
433 i2s->playback_dma_chan, in tegra30_i2s_platform_probe()
434 sizeof(i2s->playback_dma_chan), in tegra30_i2s_platform_probe()
435 &i2s->playback_dma_data.addr); in tegra30_i2s_platform_probe()
440 ret = tegra30_ahub_set_rx_cif_source(i2s->playback_i2s_cif, in tegra30_i2s_platform_probe()
441 i2s->playback_fifo_cif); in tegra30_i2s_platform_probe()
447 i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in tegra30_i2s_platform_probe()
448 i2s->capture_dma_data.maxburst = 4; in tegra30_i2s_platform_probe()
449 ret = tegra30_ahub_allocate_rx_fifo(&i2s->capture_fifo_cif, in tegra30_i2s_platform_probe()
450 i2s->capture_dma_chan, in tegra30_i2s_platform_probe()
451 sizeof(i2s->capture_dma_chan), in tegra30_i2s_platform_probe()
452 &i2s->capture_dma_data.addr); in tegra30_i2s_platform_probe()
457 ret = tegra30_ahub_set_rx_cif_source(i2s->capture_fifo_cif, in tegra30_i2s_platform_probe()
458 i2s->capture_i2s_cif); in tegra30_i2s_platform_probe()
465 &i2s->dai, 1); in tegra30_i2s_platform_probe()
473 &i2s->dma_config, i2s->playback_dma_chan, in tegra30_i2s_platform_probe()
474 i2s->capture_dma_chan); in tegra30_i2s_platform_probe()
485 tegra30_ahub_unset_rx_cif_source(i2s->capture_fifo_cif); in tegra30_i2s_platform_probe()
487 tegra30_ahub_free_rx_fifo(i2s->capture_fifo_cif); in tegra30_i2s_platform_probe()
489 tegra30_ahub_unset_rx_cif_source(i2s->playback_i2s_cif); in tegra30_i2s_platform_probe()
491 tegra30_ahub_free_tx_fifo(i2s->playback_fifo_cif); in tegra30_i2s_platform_probe()
498 clk_put(i2s->clk_i2s); in tegra30_i2s_platform_probe()
505 struct tegra30_i2s *i2s = dev_get_drvdata(&pdev->dev); in tegra30_i2s_platform_remove() local
514 tegra30_ahub_unset_rx_cif_source(i2s->capture_fifo_cif); in tegra30_i2s_platform_remove()
515 tegra30_ahub_free_rx_fifo(i2s->capture_fifo_cif); in tegra30_i2s_platform_remove()
517 tegra30_ahub_unset_rx_cif_source(i2s->playback_i2s_cif); in tegra30_i2s_platform_remove()
518 tegra30_ahub_free_tx_fifo(i2s->playback_fifo_cif); in tegra30_i2s_platform_remove()
520 clk_put(i2s->clk_i2s); in tegra30_i2s_platform_remove()
528 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_suspend() local
530 regcache_mark_dirty(i2s->regmap); in tegra30_i2s_suspend()
537 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_resume() local
543 ret = regcache_sync(i2s->regmap); in tegra30_i2s_resume()