Lines Matching refs:ssi

64 	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);  in imx_ssi_set_dai_tdm_slot()  local
67 sccr = readl(ssi->base + SSI_STCCR); in imx_ssi_set_dai_tdm_slot()
70 writel(sccr, ssi->base + SSI_STCCR); in imx_ssi_set_dai_tdm_slot()
72 sccr = readl(ssi->base + SSI_SRCCR); in imx_ssi_set_dai_tdm_slot()
75 writel(sccr, ssi->base + SSI_SRCCR); in imx_ssi_set_dai_tdm_slot()
77 writel(~tx_mask, ssi->base + SSI_STMSK); in imx_ssi_set_dai_tdm_slot()
78 writel(~rx_mask, ssi->base + SSI_SRMSK); in imx_ssi_set_dai_tdm_slot()
89 struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai); in imx_ssi_set_dai_fmt() local
92 scr = readl(ssi->base + SSI_SCR) & ~(SSI_SCR_SYN | SSI_SCR_NET); in imx_ssi_set_dai_fmt()
100 if (ssi->flags & IMX_SSI_USE_I2S_SLAVE) { in imx_ssi_set_dai_fmt()
148 if (ssi->flags & IMX_SSI_NET) in imx_ssi_set_dai_fmt()
150 if (ssi->flags & IMX_SSI_SYN) in imx_ssi_set_dai_fmt()
153 writel(strcr, ssi->base + SSI_STCR); in imx_ssi_set_dai_fmt()
154 writel(strcr, ssi->base + SSI_SRCR); in imx_ssi_set_dai_fmt()
155 writel(scr, ssi->base + SSI_SCR); in imx_ssi_set_dai_fmt()
167 struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai); in imx_ssi_set_dai_sysclk() local
170 scr = readl(ssi->base + SSI_SCR); in imx_ssi_set_dai_sysclk()
183 writel(scr, ssi->base + SSI_SCR); in imx_ssi_set_dai_sysclk()
195 struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai); in imx_ssi_set_dai_clkdiv() local
198 stccr = readl(ssi->base + SSI_STCCR); in imx_ssi_set_dai_clkdiv()
199 srccr = readl(ssi->base + SSI_SRCCR); in imx_ssi_set_dai_clkdiv()
230 writel(stccr, ssi->base + SSI_STCCR); in imx_ssi_set_dai_clkdiv()
231 writel(srccr, ssi->base + SSI_SRCCR); in imx_ssi_set_dai_clkdiv()
244 struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai); in imx_ssi_hw_params() local
253 if (ssi->flags & IMX_SSI_SYN) in imx_ssi_hw_params()
256 sccr = readl(ssi->base + reg) & ~SSI_STCCR_WL_MASK; in imx_ssi_hw_params()
271 writel(sccr, ssi->base + reg); in imx_ssi_hw_params()
279 struct imx_ssi *ssi = snd_soc_dai_get_drvdata(dai); in imx_ssi_trigger() local
283 scr = readl(ssi->base + SSI_SCR); in imx_ssi_trigger()
284 sier = readl(ssi->base + SSI_SIER); in imx_ssi_trigger()
287 if (ssi->flags & IMX_SSI_DMA) in imx_ssi_trigger()
292 if (ssi->flags & IMX_SSI_DMA) in imx_ssi_trigger()
329 if (!(ssi->flags & IMX_SSI_USE_AC97)) in imx_ssi_trigger()
331 writel(scr, ssi->base + SSI_SCR); in imx_ssi_trigger()
333 writel(sier, ssi->base + SSI_SIER); in imx_ssi_trigger()
349 struct imx_ssi *ssi = dev_get_drvdata(dai->dev); in imx_ssi_dai_probe() local
352 snd_soc_dai_set_drvdata(dai, ssi); in imx_ssi_dai_probe()
354 val = SSI_SFCSR_TFWM0(ssi->dma_params_tx.maxburst) | in imx_ssi_dai_probe()
355 SSI_SFCSR_RFWM0(ssi->dma_params_rx.maxburst); in imx_ssi_dai_probe()
356 writel(val, ssi->base + SSI_SFCSR); in imx_ssi_dai_probe()
359 dai->playback_dma_data = &ssi->dma_params_tx; in imx_ssi_dai_probe()
360 dai->capture_dma_data = &ssi->dma_params_rx; in imx_ssi_dai_probe()
514 struct imx_ssi *ssi; in imx_ssi_probe() local
519 ssi = devm_kzalloc(&pdev->dev, sizeof(*ssi), GFP_KERNEL); in imx_ssi_probe()
520 if (!ssi) in imx_ssi_probe()
522 dev_set_drvdata(&pdev->dev, ssi); in imx_ssi_probe()
525 ssi->ac97_reset = pdata->ac97_reset; in imx_ssi_probe()
526 ssi->ac97_warm_reset = pdata->ac97_warm_reset; in imx_ssi_probe()
527 ssi->flags = pdata->flags; in imx_ssi_probe()
530 ssi->irq = platform_get_irq(pdev, 0); in imx_ssi_probe()
532 ssi->clk = devm_clk_get(&pdev->dev, NULL); in imx_ssi_probe()
533 if (IS_ERR(ssi->clk)) { in imx_ssi_probe()
534 ret = PTR_ERR(ssi->clk); in imx_ssi_probe()
539 ret = clk_prepare_enable(ssi->clk); in imx_ssi_probe()
544 ssi->base = devm_ioremap_resource(&pdev->dev, res); in imx_ssi_probe()
545 if (IS_ERR(ssi->base)) { in imx_ssi_probe()
546 ret = PTR_ERR(ssi->base); in imx_ssi_probe()
550 if (ssi->flags & IMX_SSI_USE_AC97) { in imx_ssi_probe()
556 ac97_ssi = ssi; in imx_ssi_probe()
557 setup_channel_to_ac97(ssi); in imx_ssi_probe()
562 writel(0x0, ssi->base + SSI_SIER); in imx_ssi_probe()
564 ssi->dma_params_rx.addr = res->start + SSI_SRX0; in imx_ssi_probe()
565 ssi->dma_params_tx.addr = res->start + SSI_STX0; in imx_ssi_probe()
567 ssi->dma_params_tx.maxburst = 6; in imx_ssi_probe()
568 ssi->dma_params_rx.maxburst = 4; in imx_ssi_probe()
570 ssi->dma_params_tx.filter_data = &ssi->filter_data_tx; in imx_ssi_probe()
571 ssi->dma_params_rx.filter_data = &ssi->filter_data_rx; in imx_ssi_probe()
575 imx_pcm_dma_params_init_data(&ssi->filter_data_tx, res->start, in imx_ssi_probe()
581 imx_pcm_dma_params_init_data(&ssi->filter_data_rx, res->start, in imx_ssi_probe()
585 platform_set_drvdata(pdev, ssi); in imx_ssi_probe()
600 ssi->fiq_params.irq = ssi->irq; in imx_ssi_probe()
601 ssi->fiq_params.base = ssi->base; in imx_ssi_probe()
602 ssi->fiq_params.dma_params_rx = &ssi->dma_params_rx; in imx_ssi_probe()
603 ssi->fiq_params.dma_params_tx = &ssi->dma_params_tx; in imx_ssi_probe()
605 ssi->fiq_init = imx_pcm_fiq_init(pdev, &ssi->fiq_params); in imx_ssi_probe()
606 ssi->dma_init = imx_pcm_dma_init(pdev); in imx_ssi_probe()
608 if (ssi->fiq_init && ssi->dma_init) { in imx_ssi_probe()
609 ret = ssi->fiq_init; in imx_ssi_probe()
618 clk_disable_unprepare(ssi->clk); in imx_ssi_probe()
627 struct imx_ssi *ssi = platform_get_drvdata(pdev); in imx_ssi_remove() local
629 if (!ssi->fiq_init) in imx_ssi_remove()
634 if (ssi->flags & IMX_SSI_USE_AC97) in imx_ssi_remove()
637 clk_disable_unprepare(ssi->clk); in imx_ssi_remove()