Lines Matching refs:sai

32 	struct fsl_sai *sai = (struct fsl_sai *)devid;  in fsl_sai_isr()  local
33 struct device *dev = &sai->pdev->dev; in fsl_sai_isr()
45 regmap_read(sai->regmap, FSL_SAI_TCSR, &xcsr); in fsl_sai_isr()
75 regmap_write(sai->regmap, FSL_SAI_TCSR, flags | xcsr); in fsl_sai_isr()
79 regmap_read(sai->regmap, FSL_SAI_RCSR, &xcsr); in fsl_sai_isr()
109 regmap_write(sai->regmap, FSL_SAI_RCSR, flags | xcsr); in fsl_sai_isr()
121 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_set_dai_sysclk_tr() local
142 regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx), in fsl_sai_set_dai_sysclk_tr()
174 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_set_dai_fmt_tr() local
178 if (!sai->is_lsb_first) in fsl_sai_set_dai_fmt_tr()
209 sai->is_dsp_mode = true; in fsl_sai_set_dai_fmt_tr()
217 sai->is_dsp_mode = true; in fsl_sai_set_dai_fmt_tr()
265 regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx), in fsl_sai_set_dai_fmt_tr()
267 regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), in fsl_sai_set_dai_fmt_tr()
295 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_hw_params() local
301 if (!sai->is_dsp_mode) in fsl_sai_hw_params()
307 if (sai->is_lsb_first) in fsl_sai_hw_params()
314 regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), in fsl_sai_hw_params()
317 regmap_update_bits(sai->regmap, FSL_SAI_xCR5(tx), in fsl_sai_hw_params()
320 regmap_write(sai->regmap, FSL_SAI_xMR(tx), ~0UL - ((1 << channels) - 1)); in fsl_sai_hw_params()
328 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_trigger() local
337 regmap_update_bits(sai->regmap, FSL_SAI_TCR2, FSL_SAI_CR2_SYNC, 0); in fsl_sai_trigger()
338 regmap_update_bits(sai->regmap, FSL_SAI_RCR2, FSL_SAI_CR2_SYNC, in fsl_sai_trigger()
339 sai->synchronous[RX] ? FSL_SAI_CR2_SYNC : 0); in fsl_sai_trigger()
349 regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), in fsl_sai_trigger()
352 regmap_update_bits(sai->regmap, FSL_SAI_RCSR, in fsl_sai_trigger()
354 regmap_update_bits(sai->regmap, FSL_SAI_TCSR, in fsl_sai_trigger()
357 regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), in fsl_sai_trigger()
363 regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), in fsl_sai_trigger()
365 regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), in fsl_sai_trigger()
369 regmap_read(sai->regmap, FSL_SAI_xCSR(!tx), &xcsr); in fsl_sai_trigger()
372 regmap_update_bits(sai->regmap, FSL_SAI_TCSR, in fsl_sai_trigger()
374 regmap_update_bits(sai->regmap, FSL_SAI_RCSR, in fsl_sai_trigger()
380 regmap_read(sai->regmap, FSL_SAI_xCSR(tx), &xcsr); in fsl_sai_trigger()
383 regmap_update_bits(sai->regmap, FSL_SAI_TCSR, in fsl_sai_trigger()
385 regmap_update_bits(sai->regmap, FSL_SAI_RCSR, in fsl_sai_trigger()
399 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_startup() local
401 struct device *dev = &sai->pdev->dev; in fsl_sai_startup()
404 ret = clk_prepare_enable(sai->bus_clk); in fsl_sai_startup()
410 regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE, in fsl_sai_startup()
419 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_shutdown() local
422 regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE, 0); in fsl_sai_shutdown()
424 clk_disable_unprepare(sai->bus_clk); in fsl_sai_shutdown()
438 struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev); in fsl_sai_dai_probe() local
441 regmap_write(sai->regmap, FSL_SAI_TCSR, FSL_SAI_CSR_SR); in fsl_sai_dai_probe()
442 regmap_write(sai->regmap, FSL_SAI_RCSR, FSL_SAI_CSR_SR); in fsl_sai_dai_probe()
444 regmap_write(sai->regmap, FSL_SAI_TCSR, 0); in fsl_sai_dai_probe()
445 regmap_write(sai->regmap, FSL_SAI_RCSR, 0); in fsl_sai_dai_probe()
447 regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK, in fsl_sai_dai_probe()
449 regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK, in fsl_sai_dai_probe()
452 snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx, in fsl_sai_dai_probe()
453 &sai->dma_params_rx); in fsl_sai_dai_probe()
455 snd_soc_dai_set_drvdata(cpu_dai, sai); in fsl_sai_dai_probe()
561 struct fsl_sai *sai; in fsl_sai_probe() local
567 sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL); in fsl_sai_probe()
568 if (!sai) in fsl_sai_probe()
571 sai->pdev = pdev; in fsl_sai_probe()
574 sai->sai_on_imx = true; in fsl_sai_probe()
576 sai->is_lsb_first = of_property_read_bool(np, "lsb-first"); in fsl_sai_probe()
583 sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev, in fsl_sai_probe()
587 if (IS_ERR(sai->regmap)) in fsl_sai_probe()
588 sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev, in fsl_sai_probe()
590 if (IS_ERR(sai->regmap)) { in fsl_sai_probe()
592 return PTR_ERR(sai->regmap); in fsl_sai_probe()
596 sai->bus_clk = devm_clk_get(&pdev->dev, "bus"); in fsl_sai_probe()
597 if (IS_ERR(sai->bus_clk)) { in fsl_sai_probe()
599 PTR_ERR(sai->bus_clk)); in fsl_sai_probe()
600 sai->bus_clk = NULL; in fsl_sai_probe()
605 sai->mclk_clk[i] = devm_clk_get(&pdev->dev, tmp); in fsl_sai_probe()
606 if (IS_ERR(sai->mclk_clk[i])) { in fsl_sai_probe()
608 i + 1, PTR_ERR(sai->mclk_clk[i])); in fsl_sai_probe()
609 sai->mclk_clk[i] = NULL; in fsl_sai_probe()
619 ret = devm_request_irq(&pdev->dev, irq, fsl_sai_isr, 0, np->name, sai); in fsl_sai_probe()
626 sai->synchronous[RX] = true; in fsl_sai_probe()
627 sai->synchronous[TX] = false; in fsl_sai_probe()
641 sai->synchronous[RX] = false; in fsl_sai_probe()
642 sai->synchronous[TX] = true; in fsl_sai_probe()
645 sai->synchronous[RX] = false; in fsl_sai_probe()
646 sai->synchronous[TX] = false; in fsl_sai_probe()
652 sai->dma_params_rx.addr = res->start + FSL_SAI_RDR; in fsl_sai_probe()
653 sai->dma_params_tx.addr = res->start + FSL_SAI_TDR; in fsl_sai_probe()
654 sai->dma_params_rx.maxburst = FSL_SAI_MAXBURST_RX; in fsl_sai_probe()
655 sai->dma_params_tx.maxburst = FSL_SAI_MAXBURST_TX; in fsl_sai_probe()
657 platform_set_drvdata(pdev, sai); in fsl_sai_probe()
664 if (sai->sai_on_imx) in fsl_sai_probe()