sai 334 drivers/dma/txx9dmac.c u32 sai, dai; sai 352 drivers/dma/txx9dmac.c sai = ds->reg_width; sai 355 drivers/dma/txx9dmac.c sai = 0; sai 359 drivers/dma/txx9dmac.c sai = 8; sai 362 drivers/dma/txx9dmac.c channel64_writel(dc, SAIR, sai); sai 373 drivers/dma/txx9dmac.c sai = ds->reg_width; sai 376 drivers/dma/txx9dmac.c sai = 0; sai 380 drivers/dma/txx9dmac.c sai = 4; sai 383 drivers/dma/txx9dmac.c channel32_writel(dc, SAIR, sai); sai 830 drivers/dma/txx9dmac.c u32 sai, dai; sai 860 drivers/dma/txx9dmac.c sai = ds->reg_width; sai 863 drivers/dma/txx9dmac.c sai = 0; sai 866 drivers/dma/txx9dmac.c txx9dmac_desc_set_nosimple(ddev, desc, sai, dai, sai 289 drivers/dma/txx9dmac.h u32 sai, u32 dai, u32 ccr) sai 292 drivers/dma/txx9dmac.h desc->hwdesc.SAIR = sai; sai 296 drivers/dma/txx9dmac.h desc->hwdesc32.SAIR = sai; sai 629 fs/xfs/scrub/agheader.c struct xchk_agfl_info *sai = priv; sai 630 fs/xfs/scrub/agheader.c struct xfs_scrub *sc = sai->sc; sai 634 fs/xfs/scrub/agheader.c sai->nr_entries < sai->sz_entries) sai 635 fs/xfs/scrub/agheader.c sai->entries[sai->nr_entries++] = agbno; sai 692 fs/xfs/scrub/agheader.c struct xchk_agfl_info sai; sai 720 fs/xfs/scrub/agheader.c memset(&sai, 0, sizeof(sai)); sai 721 fs/xfs/scrub/agheader.c sai.sc = sc; sai 722 fs/xfs/scrub/agheader.c sai.sz_entries = agflcount; sai 723 fs/xfs/scrub/agheader.c sai.entries = kmem_zalloc(sizeof(xfs_agblock_t) * agflcount, sai 725 fs/xfs/scrub/agheader.c if (!sai.entries) { sai 732 fs/xfs/scrub/agheader.c sc->sa.agfl_bp, xchk_agfl_block, &sai); sai 740 fs/xfs/scrub/agheader.c if (agflcount != sai.nr_entries) { sai 746 fs/xfs/scrub/agheader.c sort(sai.entries, sai.nr_entries, sizeof(sai.entries[0]), sai 748 fs/xfs/scrub/agheader.c for (i = 1; i < sai.nr_entries; i++) { sai 749 fs/xfs/scrub/agheader.c if (sai.entries[i] == sai.entries[i - 1]) { sai 756 fs/xfs/scrub/agheader.c kmem_free(sai.entries); sai 586 net/sctp/ulpevent.c struct sctp_adaptation_event *sai; sai 595 net/sctp/ulpevent.c sai = skb_put(skb, sizeof(struct sctp_adaptation_event)); sai 597 net/sctp/ulpevent.c sai->sai_type = SCTP_ADAPTATION_INDICATION; sai 598 net/sctp/ulpevent.c sai->sai_flags = 0; sai 599 net/sctp/ulpevent.c sai->sai_length = sizeof(struct sctp_adaptation_event); sai 600 net/sctp/ulpevent.c sai->sai_adaptation_ind = asoc->peer.adaptation_ind; sai 602 net/sctp/ulpevent.c sai->sai_assoc_id = sctp_assoc2id(asoc); sai 42 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = (struct fsl_sai *)devid; sai 43 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 44 sound/soc/fsl/fsl_sai.c struct device *dev = &sai->pdev->dev; sai 56 sound/soc/fsl/fsl_sai.c regmap_read(sai->regmap, FSL_SAI_TCSR(ofs), &xcsr); sai 86 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), flags | xcsr); sai 90 sound/soc/fsl/fsl_sai.c regmap_read(sai->regmap, FSL_SAI_RCSR(ofs), &xcsr); sai 120 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), flags | xcsr); sai 132 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 134 sound/soc/fsl/fsl_sai.c sai->slots = slots; sai 135 sound/soc/fsl/fsl_sai.c sai->slot_width = slot_width; sai 143 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(dai); sai 145 sound/soc/fsl/fsl_sai.c sai->bclk_ratio = ratio; sai 153 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 154 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 175 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs), sai 207 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 208 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 212 sound/soc/fsl/fsl_sai.c if (!sai->is_lsb_first) sai 243 sound/soc/fsl/fsl_sai.c sai->is_dsp_mode = true; sai 251 sound/soc/fsl/fsl_sai.c sai->is_dsp_mode = true; sai 286 sound/soc/fsl/fsl_sai.c sai->is_slave_mode = false; sai 289 sound/soc/fsl/fsl_sai.c sai->is_slave_mode = true; sai 293 sound/soc/fsl/fsl_sai.c sai->is_slave_mode = false; sai 297 sound/soc/fsl/fsl_sai.c sai->is_slave_mode = true; sai 303 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs), sai 305 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx, ofs), sai 331 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(dai); sai 332 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 339 sound/soc/fsl/fsl_sai.c if (sai->is_slave_mode) sai 343 sound/soc/fsl/fsl_sai.c clk_rate = clk_get_rate(sai->mclk_clk[id]); sai 369 sound/soc/fsl/fsl_sai.c sai->mclk_id[tx] = id; sai 393 sound/soc/fsl/fsl_sai.c if ((sai->synchronous[TX] && !sai->synchronous[RX]) || sai 394 sound/soc/fsl/fsl_sai.c (!tx && !sai->synchronous[RX])) { sai 395 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR2(ofs), sai 397 sound/soc/fsl/fsl_sai.c FSL_SAI_CR2_MSEL(sai->mclk_id[tx])); sai 398 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR2(ofs), sai 400 sound/soc/fsl/fsl_sai.c } else if ((sai->synchronous[RX] && !sai->synchronous[TX]) || sai 401 sound/soc/fsl/fsl_sai.c (tx && !sai->synchronous[TX])) { sai 402 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR2(ofs), sai 404 sound/soc/fsl/fsl_sai.c FSL_SAI_CR2_MSEL(sai->mclk_id[tx])); sai 405 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR2(ofs), sai 410 sound/soc/fsl/fsl_sai.c sai->mclk_id[tx], savediv, savesub); sai 419 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 420 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 429 sound/soc/fsl/fsl_sai.c if (sai->slots) sai 430 sound/soc/fsl/fsl_sai.c slots = sai->slots; sai 432 sound/soc/fsl/fsl_sai.c if (sai->slot_width) sai 433 sound/soc/fsl/fsl_sai.c slot_width = sai->slot_width; sai 435 sound/soc/fsl/fsl_sai.c if (!sai->is_slave_mode) { sai 436 sound/soc/fsl/fsl_sai.c if (sai->bclk_ratio) sai 438 sound/soc/fsl/fsl_sai.c sai->bclk_ratio * sai 448 sound/soc/fsl/fsl_sai.c if (!(sai->mclk_streams & BIT(substream->stream))) { sai 449 sound/soc/fsl/fsl_sai.c ret = clk_prepare_enable(sai->mclk_clk[sai->mclk_id[tx]]); sai 453 sound/soc/fsl/fsl_sai.c sai->mclk_streams |= BIT(substream->stream); sai 457 sound/soc/fsl/fsl_sai.c if (!sai->is_dsp_mode) sai 463 sound/soc/fsl/fsl_sai.c if (sai->is_lsb_first) sai 477 sound/soc/fsl/fsl_sai.c if (!sai->is_slave_mode) { sai 478 sound/soc/fsl/fsl_sai.c if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) { sai 479 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR4(ofs), sai 482 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR5(ofs), sai 485 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TMR, sai 487 sound/soc/fsl/fsl_sai.c } else if (!sai->synchronous[RX] && sai->synchronous[TX] && tx) { sai 488 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR4(ofs), sai 491 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR5(ofs), sai 494 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RMR, sai 499 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx, ofs), sai 502 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR5(tx, ofs), sai 505 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_xMR(tx), ~0UL - ((1 << channels) - 1)); sai 513 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 516 sound/soc/fsl/fsl_sai.c if (!sai->is_slave_mode && sai 517 sound/soc/fsl/fsl_sai.c sai->mclk_streams & BIT(substream->stream)) { sai 518 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[tx]]); sai 519 sound/soc/fsl/fsl_sai.c sai->mclk_streams &= ~BIT(substream->stream); sai 529 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 530 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 540 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR2(ofs), FSL_SAI_CR2_SYNC, sai 541 sound/soc/fsl/fsl_sai.c sai->synchronous[TX] ? FSL_SAI_CR2_SYNC : 0); sai 542 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR2(ofs), FSL_SAI_CR2_SYNC, sai 543 sound/soc/fsl/fsl_sai.c sai->synchronous[RX] ? FSL_SAI_CR2_SYNC : 0); sai 553 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), sai 556 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), sai 558 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), sai 561 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), sai 567 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), sai 569 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), sai 573 sound/soc/fsl/fsl_sai.c regmap_read(sai->regmap, FSL_SAI_xCSR(!tx, ofs), &xcsr); sai 576 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), sai 578 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), sai 584 sound/soc/fsl/fsl_sai.c regmap_read(sai->regmap, sai 588 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), sai 590 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), sai 600 sound/soc/fsl/fsl_sai.c if (!sai->is_slave_mode) { sai 602 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), sai 604 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), sai 607 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), 0); sai 608 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0); sai 622 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 623 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 627 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx, ofs), sai 635 sound/soc/fsl/fsl_sai.c if (sai->soc_data->use_edma) sai 638 sound/soc/fsl/fsl_sai.c tx ? sai->dma_params_tx.maxburst : sai 639 sound/soc/fsl/fsl_sai.c sai->dma_params_rx.maxburst); sai 650 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 651 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 654 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx, ofs), sai 672 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev); sai 673 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 676 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR); sai 677 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR); sai 679 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), 0); sai 680 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0); sai 682 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_TCR1(ofs), sai 684 sound/soc/fsl/fsl_sai.c sai->soc_data->fifo_depth - FSL_SAI_MAXBURST_TX); sai 685 sound/soc/fsl/fsl_sai.c regmap_update_bits(sai->regmap, FSL_SAI_RCR1(ofs), sai 688 sound/soc/fsl/fsl_sai.c snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx, sai 689 sound/soc/fsl/fsl_sai.c &sai->dma_params_rx); sai 691 sound/soc/fsl/fsl_sai.c snd_soc_dai_set_drvdata(cpu_dai, sai); sai 771 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(dev); sai 772 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 815 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(dev); sai 816 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 854 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(dev); sai 855 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 898 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai; sai 906 sound/soc/fsl/fsl_sai.c sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL); sai 907 sound/soc/fsl/fsl_sai.c if (!sai) sai 910 sound/soc/fsl/fsl_sai.c sai->pdev = pdev; sai 911 sound/soc/fsl/fsl_sai.c sai->soc_data = of_device_get_match_data(&pdev->dev); sai 913 sound/soc/fsl/fsl_sai.c sai->is_lsb_first = of_property_read_bool(np, "lsb-first"); sai 920 sound/soc/fsl/fsl_sai.c if (sai->soc_data->reg_offset == 8) { sai 926 sound/soc/fsl/fsl_sai.c sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev, sai 930 sound/soc/fsl/fsl_sai.c if (IS_ERR(sai->regmap)) sai 931 sound/soc/fsl/fsl_sai.c sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev, sai 933 sound/soc/fsl/fsl_sai.c if (IS_ERR(sai->regmap)) { sai 935 sound/soc/fsl/fsl_sai.c return PTR_ERR(sai->regmap); sai 939 sound/soc/fsl/fsl_sai.c sai->bus_clk = devm_clk_get(&pdev->dev, "bus"); sai 940 sound/soc/fsl/fsl_sai.c if (IS_ERR(sai->bus_clk)) { sai 942 sound/soc/fsl/fsl_sai.c PTR_ERR(sai->bus_clk)); sai 943 sound/soc/fsl/fsl_sai.c sai->bus_clk = NULL; sai 946 sound/soc/fsl/fsl_sai.c sai->mclk_clk[0] = sai->bus_clk; sai 949 sound/soc/fsl/fsl_sai.c sai->mclk_clk[i] = devm_clk_get(&pdev->dev, tmp); sai 950 sound/soc/fsl/fsl_sai.c if (IS_ERR(sai->mclk_clk[i])) { sai 952 sound/soc/fsl/fsl_sai.c i + 1, PTR_ERR(sai->mclk_clk[i])); sai 953 sound/soc/fsl/fsl_sai.c sai->mclk_clk[i] = NULL; sai 961 sound/soc/fsl/fsl_sai.c ret = devm_request_irq(&pdev->dev, irq, fsl_sai_isr, 0, np->name, sai); sai 968 sound/soc/fsl/fsl_sai.c sai->synchronous[RX] = true; sai 969 sound/soc/fsl/fsl_sai.c sai->synchronous[TX] = false; sai 983 sound/soc/fsl/fsl_sai.c sai->synchronous[RX] = false; sai 984 sound/soc/fsl/fsl_sai.c sai->synchronous[TX] = true; sai 987 sound/soc/fsl/fsl_sai.c sai->synchronous[RX] = false; sai 988 sound/soc/fsl/fsl_sai.c sai->synchronous[TX] = false; sai 1010 sound/soc/fsl/fsl_sai.c sai->dma_params_rx.addr = res->start + FSL_SAI_RDR0; sai 1011 sound/soc/fsl/fsl_sai.c sai->dma_params_tx.addr = res->start + FSL_SAI_TDR0; sai 1012 sound/soc/fsl/fsl_sai.c sai->dma_params_rx.maxburst = FSL_SAI_MAXBURST_RX; sai 1013 sound/soc/fsl/fsl_sai.c sai->dma_params_tx.maxburst = FSL_SAI_MAXBURST_TX; sai 1015 sound/soc/fsl/fsl_sai.c platform_set_drvdata(pdev, sai); sai 1024 sound/soc/fsl/fsl_sai.c if (sai->soc_data->use_imx_pcm) { sai 1098 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(dev); sai 1100 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_CAPTURE)) sai 1101 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[0]]); sai 1103 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_PLAYBACK)) sai 1104 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[1]]); sai 1106 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->bus_clk); sai 1108 sound/soc/fsl/fsl_sai.c regcache_cache_only(sai->regmap, true); sai 1109 sound/soc/fsl/fsl_sai.c regcache_mark_dirty(sai->regmap); sai 1116 sound/soc/fsl/fsl_sai.c struct fsl_sai *sai = dev_get_drvdata(dev); sai 1117 sound/soc/fsl/fsl_sai.c unsigned int ofs = sai->soc_data->reg_offset; sai 1120 sound/soc/fsl/fsl_sai.c ret = clk_prepare_enable(sai->bus_clk); sai 1126 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_PLAYBACK)) { sai 1127 sound/soc/fsl/fsl_sai.c ret = clk_prepare_enable(sai->mclk_clk[sai->mclk_id[1]]); sai 1132 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_CAPTURE)) { sai 1133 sound/soc/fsl/fsl_sai.c ret = clk_prepare_enable(sai->mclk_clk[sai->mclk_id[0]]); sai 1138 sound/soc/fsl/fsl_sai.c regcache_cache_only(sai->regmap, false); sai 1139 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR); sai 1140 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR); sai 1142 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), 0); sai 1143 sound/soc/fsl/fsl_sai.c regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0); sai 1145 sound/soc/fsl/fsl_sai.c ret = regcache_sync(sai->regmap); sai 1152 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_CAPTURE)) sai 1153 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[0]]); sai 1155 sound/soc/fsl/fsl_sai.c if (sai->mclk_streams & BIT(SNDRV_PCM_STREAM_PLAYBACK)) sai 1156 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[1]]); sai 1158 sound/soc/fsl/fsl_sai.c clk_disable_unprepare(sai->bus_clk); sai 47 sound/soc/stm/stm32_sai.c struct stm32_sai_data *sai = dev_get_drvdata(dev); sai 49 sound/soc/stm/stm32_sai.c clk_disable_unprepare(sai->pclk); sai 56 sound/soc/stm/stm32_sai.c struct stm32_sai_data *sai = dev_get_drvdata(dev); sai 59 sound/soc/stm/stm32_sai.c ret = clk_prepare_enable(sai->pclk); sai 61 sound/soc/stm/stm32_sai.c dev_err(&sai->pdev->dev, "failed to enable clock: %d\n", ret); sai 68 sound/soc/stm/stm32_sai.c static int stm32_sai_sync_conf_client(struct stm32_sai_data *sai, int synci) sai 73 sound/soc/stm/stm32_sai.c ret = stm32_sai_pclk_enable(&sai->pdev->dev); sai 77 sound/soc/stm/stm32_sai.c writel_relaxed(FIELD_PREP(SAI_GCR_SYNCIN_MASK, (synci - 1)), sai->base); sai 79 sound/soc/stm/stm32_sai.c stm32_sai_pclk_disable(&sai->pdev->dev); sai 84 sound/soc/stm/stm32_sai.c static int stm32_sai_sync_conf_provider(struct stm32_sai_data *sai, int synco) sai 90 sound/soc/stm/stm32_sai.c ret = stm32_sai_pclk_enable(&sai->pdev->dev); sai 94 sound/soc/stm/stm32_sai.c dev_dbg(&sai->pdev->dev, "Set %pOFn%s as synchro provider\n", sai 95 sound/soc/stm/stm32_sai.c sai->pdev->dev.of_node, sai 98 sound/soc/stm/stm32_sai.c prev_synco = FIELD_GET(SAI_GCR_SYNCOUT_MASK, readl_relaxed(sai->base)); sai 100 sound/soc/stm/stm32_sai.c dev_err(&sai->pdev->dev, "%pOFn%s already set as sync provider\n", sai 101 sound/soc/stm/stm32_sai.c sai->pdev->dev.of_node, sai 103 sound/soc/stm/stm32_sai.c stm32_sai_pclk_disable(&sai->pdev->dev); sai 107 sound/soc/stm/stm32_sai.c writel_relaxed(FIELD_PREP(SAI_GCR_SYNCOUT_MASK, synco), sai->base); sai 109 sound/soc/stm/stm32_sai.c stm32_sai_pclk_disable(&sai->pdev->dev); sai 153 sound/soc/stm/stm32_sai.c struct stm32_sai_data *sai; sai 159 sound/soc/stm/stm32_sai.c sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL); sai 160 sound/soc/stm/stm32_sai.c if (!sai) sai 163 sound/soc/stm/stm32_sai.c sai->base = devm_platform_ioremap_resource(pdev, 0); sai 164 sound/soc/stm/stm32_sai.c if (IS_ERR(sai->base)) sai 165 sound/soc/stm/stm32_sai.c return PTR_ERR(sai->base); sai 169 sound/soc/stm/stm32_sai.c memcpy(&sai->conf, (const struct stm32_sai_conf *)of_id->data, sai 174 sound/soc/stm/stm32_sai.c if (!STM_SAI_IS_F4(sai)) { sai 175 sound/soc/stm/stm32_sai.c sai->pclk = devm_clk_get(&pdev->dev, "pclk"); sai 176 sound/soc/stm/stm32_sai.c if (IS_ERR(sai->pclk)) { sai 178 sound/soc/stm/stm32_sai.c return PTR_ERR(sai->pclk); sai 182 sound/soc/stm/stm32_sai.c sai->clk_x8k = devm_clk_get(&pdev->dev, "x8k"); sai 183 sound/soc/stm/stm32_sai.c if (IS_ERR(sai->clk_x8k)) { sai 185 sound/soc/stm/stm32_sai.c return PTR_ERR(sai->clk_x8k); sai 188 sound/soc/stm/stm32_sai.c sai->clk_x11k = devm_clk_get(&pdev->dev, "x11k"); sai 189 sound/soc/stm/stm32_sai.c if (IS_ERR(sai->clk_x11k)) { sai 191 sound/soc/stm/stm32_sai.c return PTR_ERR(sai->clk_x11k); sai 195 sound/soc/stm/stm32_sai.c sai->irq = platform_get_irq(pdev, 0); sai 196 sound/soc/stm/stm32_sai.c if (sai->irq < 0) sai 197 sound/soc/stm/stm32_sai.c return sai->irq; sai 208 sound/soc/stm/stm32_sai.c ret = clk_prepare_enable(sai->pclk); sai 215 sound/soc/stm/stm32_sai.c readl_relaxed(sai->base + STM_SAI_IDR)); sai 217 sound/soc/stm/stm32_sai.c val = readl_relaxed(sai->base + STM_SAI_HWCFGR); sai 218 sound/soc/stm/stm32_sai.c sai->conf.fifo_size = FIELD_GET(SAI_HWCFGR_FIFO_SIZE, val); sai 219 sound/soc/stm/stm32_sai.c sai->conf.has_spdif_pdm = !!FIELD_GET(SAI_HWCFGR_SPDIF_PDM, sai 222 sound/soc/stm/stm32_sai.c val = readl_relaxed(sai->base + STM_SAI_VERR); sai 223 sound/soc/stm/stm32_sai.c sai->conf.version = val; sai 229 sound/soc/stm/stm32_sai.c clk_disable_unprepare(sai->pclk); sai 231 sound/soc/stm/stm32_sai.c sai->pdev = pdev; sai 232 sound/soc/stm/stm32_sai.c sai->set_sync = &stm32_sai_set_sync; sai 233 sound/soc/stm/stm32_sai.c platform_set_drvdata(pdev, sai); sai 246 sound/soc/stm/stm32_sai.c struct stm32_sai_data *sai = dev_get_drvdata(dev); sai 253 sound/soc/stm/stm32_sai.c sai->gcr = readl_relaxed(sai->base); sai 261 sound/soc/stm/stm32_sai.c struct stm32_sai_data *sai = dev_get_drvdata(dev); sai 268 sound/soc/stm/stm32_sai.c writel_relaxed(sai->gcr, sai->base); sai 299 sound/soc/stm/stm32_sai.h int (*set_sync)(struct stm32_sai_data *sai, sai 57 sound/soc/stm/stm32_sai_sub.c #define STM_SAI_HAS_EXT_SYNC(x) (!STM_SAI_IS_F4(sai->pdata)) sai 187 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_sub_reg_up(struct stm32_sai_sub_data *sai, sai 193 sound/soc/stm/stm32_sai_sub.c ret = clk_enable(sai->pdata->pclk); sai 197 sound/soc/stm/stm32_sai_sub.c ret = regmap_update_bits(sai->regmap, reg, mask, val); sai 199 sound/soc/stm/stm32_sai_sub.c clk_disable(sai->pdata->pclk); sai 204 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_sub_reg_wr(struct stm32_sai_sub_data *sai, sai 210 sound/soc/stm/stm32_sai_sub.c ret = clk_enable(sai->pdata->pclk); sai 214 sound/soc/stm/stm32_sai_sub.c ret = regmap_write_bits(sai->regmap, reg, mask, val); sai 216 sound/soc/stm/stm32_sai_sub.c clk_disable(sai->pdata->pclk); sai 221 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_sub_reg_rd(struct stm32_sai_sub_data *sai, sai 226 sound/soc/stm/stm32_sai_sub.c ret = clk_enable(sai->pdata->pclk); sai 230 sound/soc/stm/stm32_sai_sub.c ret = regmap_read(sai->regmap, reg, val); sai 232 sound/soc/stm/stm32_sai_sub.c clk_disable(sai->pdata->pclk); sai 273 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_kcontrol_chip(kcontrol); sai 275 sound/soc/stm/stm32_sai_sub.c mutex_lock(&sai->ctrl_lock); sai 276 sound/soc/stm/stm32_sai_sub.c memcpy(uctl->value.iec958.status, sai->iec958.status, 4); sai 277 sound/soc/stm/stm32_sai_sub.c mutex_unlock(&sai->ctrl_lock); sai 285 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_kcontrol_chip(kcontrol); sai 287 sound/soc/stm/stm32_sai_sub.c mutex_lock(&sai->ctrl_lock); sai 288 sound/soc/stm/stm32_sai_sub.c memcpy(sai->iec958.status, uctl->value.iec958.status, 4); sai 289 sound/soc/stm/stm32_sai_sub.c mutex_unlock(&sai->ctrl_lock); sai 313 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_get_clk_div(struct stm32_sai_sub_data *sai, sai 317 sound/soc/stm/stm32_sai_sub.c int version = sai->pdata->conf.version; sai 322 sound/soc/stm/stm32_sai_sub.c dev_err(&sai->pdev->dev, "Divider %d out of range\n", div); sai 325 sound/soc/stm/stm32_sai_sub.c dev_dbg(&sai->pdev->dev, "SAI divider %d\n", div); sai 328 sound/soc/stm/stm32_sai_sub.c dev_dbg(&sai->pdev->dev, sai 335 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_set_clk_div(struct stm32_sai_sub_data *sai, sai 338 sound/soc/stm/stm32_sai_sub.c int version = sai->pdata->conf.version; sai 342 sound/soc/stm/stm32_sai_sub.c dev_err(&sai->pdev->dev, "Divider %d out of range\n", div); sai 348 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, mask, cr1); sai 350 sound/soc/stm/stm32_sai_sub.c dev_err(&sai->pdev->dev, "Failed to update CR1 register\n"); sai 355 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_set_parent_clock(struct stm32_sai_sub_data *sai, sai 358 sound/soc/stm/stm32_sai_sub.c struct platform_device *pdev = sai->pdev; sai 359 sound/soc/stm/stm32_sai_sub.c struct clk *parent_clk = sai->pdata->clk_x8k; sai 363 sound/soc/stm/stm32_sai_sub.c parent_clk = sai->pdata->clk_x11k; sai 365 sound/soc/stm/stm32_sai_sub.c ret = clk_set_parent(sai->sai_ck, parent_clk); sai 378 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = mclk->sai_data; sai 381 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, *prate, rate); sai 402 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = mclk->sai_data; sai 405 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, parent_rate, rate); sai 409 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_set_clk_div(sai, div); sai 421 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = mclk->sai_data; sai 423 sound/soc/stm/stm32_sai_sub.c dev_dbg(&sai->pdev->dev, "Enable master clock\n"); sai 425 sound/soc/stm/stm32_sai_sub.c return stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 432 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = mclk->sai_data; sai 434 sound/soc/stm/stm32_sai_sub.c dev_dbg(&sai->pdev->dev, "Disable master clock\n"); sai 436 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, SAI_XCR1_MCKEN, 0); sai 447 sound/soc/stm/stm32_sai_sub.c static int stm32_sai_add_mclk_provider(struct stm32_sai_sub_data *sai) sai 451 sound/soc/stm/stm32_sai_sub.c struct device *dev = &sai->pdev->dev; sai 452 sound/soc/stm/stm32_sai_sub.c const char *pname = __clk_get_name(sai->sai_ck); sai 474 sound/soc/stm/stm32_sai_sub.c STM_SAI_IS_SUB_A(sai) ? strcat(p, "a_mclk") : strcat(p, "b_mclk"); sai 477 sound/soc/stm/stm32_sai_sub.c mclk->sai_data = sai; sai 481 sound/soc/stm/stm32_sai_sub.c ret = devm_clk_hw_register(&sai->pdev->dev, hw); sai 486 sound/soc/stm/stm32_sai_sub.c sai->sai_mclk = hw->clk; sai 494 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = (struct stm32_sai_sub_data *)devid; sai 495 sound/soc/stm/stm32_sai_sub.c struct platform_device *pdev = sai->pdev; sai 499 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_rd(sai, STM_SAI_IMR_REGX, &imr); sai 500 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_rd(sai, STM_SAI_SR_REGX, &sr); sai 506 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_wr(sai, STM_SAI_CLRFR_REGX, SAI_XCLRFR_MASK, sai 509 sound/soc/stm/stm32_sai_sub.c if (!sai->substream) { sai 516 sound/soc/stm/stm32_sai_sub.c STM_SAI_IS_PLAYBACK(sai) ? "underrun" : "overrun"); sai 541 sound/soc/stm/stm32_sai_sub.c spin_lock(&sai->irq_lock); sai 542 sound/soc/stm/stm32_sai_sub.c if (status != SNDRV_PCM_STATE_RUNNING && sai->substream) sai 543 sound/soc/stm/stm32_sai_sub.c snd_pcm_stop_xrun(sai->substream); sai 544 sound/soc/stm/stm32_sai_sub.c spin_unlock(&sai->irq_lock); sai 552 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 555 sound/soc/stm/stm32_sai_sub.c if (dir == SND_SOC_CLOCK_OUT && sai->sai_mclk) { sai 556 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 565 sound/soc/stm/stm32_sai_sub.c if (sai->mclk_rate) { sai 566 sound/soc/stm/stm32_sai_sub.c clk_rate_exclusive_put(sai->sai_mclk); sai 567 sound/soc/stm/stm32_sai_sub.c sai->mclk_rate = 0; sai 573 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_set_parent_clock(sai, freq); sai 577 sound/soc/stm/stm32_sai_sub.c ret = clk_set_rate_exclusive(sai->sai_mclk, freq); sai 587 sound/soc/stm/stm32_sai_sub.c sai->mclk_rate = freq; sai 596 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 599 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 624 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_PLAYBACK(sai)) { sai 625 sound/soc/stm/stm32_sai_sub.c sai->slot_mask = tx_mask; sai 629 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_CAPTURE(sai)) { sai 630 sound/soc/stm/stm32_sai_sub.c sai->slot_mask = rx_mask; sai 636 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_SLOTR_REGX, slotr_mask, slotr); sai 638 sound/soc/stm/stm32_sai_sub.c sai->slot_width = slot_width; sai 639 sound/soc/stm/stm32_sai_sub.c sai->slots = slots; sai 646 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 658 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 718 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_FRCR_REGX, frcr_mask, frcr); sai 725 sound/soc/stm/stm32_sai_sub.c sai->master = false; sai 728 sound/soc/stm/stm32_sai_sub.c sai->master = true; sai 737 sound/soc/stm/stm32_sai_sub.c if (sai->sync) { sai 740 sound/soc/stm/stm32_sai_sub.c sai->master = false; sai 746 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, cr1_mask, cr1); sai 752 sound/soc/stm/stm32_sai_sub.c sai->fmt = fmt; sai 760 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 764 sound/soc/stm/stm32_sai_sub.c spin_lock_irqsave(&sai->irq_lock, flags); sai 765 sound/soc/stm/stm32_sai_sub.c sai->substream = substream; sai 766 sound/soc/stm/stm32_sai_sub.c spin_unlock_irqrestore(&sai->irq_lock, flags); sai 768 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 776 sound/soc/stm/stm32_sai_sub.c ret = clk_prepare_enable(sai->sai_ck); sai 783 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_wr(sai, STM_SAI_CLRFR_REGX, sai 787 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_CAPTURE(sai)) { sai 788 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_rd(sai, STM_SAI_CR2_REGX, &cr2); sai 793 sound/soc/stm/stm32_sai_sub.c if (sai->master) sai 798 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_IMR_REGX, sai 808 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 816 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_wr(sai, STM_SAI_CR2_REGX, sai 822 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 823 sound/soc/stm/stm32_sai_sub.c sai->spdif_frm_cnt = 0; sai 845 sound/soc/stm/stm32_sai_sub.c if ((sai->slots == 2) && (params_channels(params) == 1)) sai 848 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, cr1_mask, cr1); sai 859 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 862 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_rd(sai, STM_SAI_SLOTR_REGX, &slotr); sai 870 sound/soc/stm/stm32_sai_sub.c sai->slot_width = sai->data_size; sai 872 sound/soc/stm/stm32_sai_sub.c if (sai->slot_width < sai->data_size) { sai 875 sound/soc/stm/stm32_sai_sub.c sai->data_size); sai 880 sound/soc/stm/stm32_sai_sub.c if (!sai->slots) sai 881 sound/soc/stm/stm32_sai_sub.c sai->slots = 2; sai 884 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_SLOTR_REGX, sai 886 sound/soc/stm/stm32_sai_sub.c SAI_XSLOTR_NBSLOT_SET((sai->slots - 1))); sai 890 sound/soc/stm/stm32_sai_sub.c sai->slot_mask = (1 << sai->slots) - 1; sai 891 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, sai 893 sound/soc/stm/stm32_sai_sub.c SAI_XSLOTR_SLOTEN_SET(sai->slot_mask)); sai 897 sound/soc/stm/stm32_sai_sub.c sai->slots, sai->slot_width); sai 904 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 908 sound/soc/stm/stm32_sai_sub.c format = sai->fmt & SND_SOC_DAIFMT_FORMAT_MASK; sai 909 sound/soc/stm/stm32_sai_sub.c sai->fs_length = sai->slot_width * sai->slots; sai 911 sound/soc/stm/stm32_sai_sub.c fs_active = sai->fs_length / 2; sai 916 sound/soc/stm/stm32_sai_sub.c frcr = SAI_XFRCR_FRL_SET((sai->fs_length - 1)); sai 921 sound/soc/stm/stm32_sai_sub.c sai->fs_length, fs_active); sai 923 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_FRCR_REGX, frcr_mask, frcr); sai 925 sound/soc/stm/stm32_sai_sub.c if ((sai->fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_LSB) { sai 926 sound/soc/stm/stm32_sai_sub.c offset = sai->slot_width - sai->data_size; sai 928 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_SLOTR_REGX, sai 934 sound/soc/stm/stm32_sai_sub.c static void stm32_sai_init_iec958_status(struct stm32_sai_sub_data *sai) sai 936 sound/soc/stm/stm32_sai_sub.c unsigned char *cs = sai->iec958.status; sai 944 sound/soc/stm/stm32_sai_sub.c static void stm32_sai_set_iec958_status(struct stm32_sai_sub_data *sai, sai 951 sound/soc/stm/stm32_sai_sub.c mutex_lock(&sai->ctrl_lock); sai 954 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_22050; sai 957 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_44100; sai 960 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_88200; sai 963 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_176400; sai 966 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_24000; sai 969 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_48000; sai 972 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_96000; sai 975 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_192000; sai 978 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_32000; sai 981 sound/soc/stm/stm32_sai_sub.c sai->iec958.status[3] = IEC958_AES3_CON_FS_NOTID; sai 984 sound/soc/stm/stm32_sai_sub.c mutex_unlock(&sai->ctrl_lock); sai 990 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 996 sound/soc/stm/stm32_sai_sub.c if (!sai->sai_mclk) { sai 997 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_set_parent_clock(sai, rate); sai 1001 sound/soc/stm/stm32_sai_sub.c sai_clk_rate = clk_get_rate(sai->sai_ck); sai 1003 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_F4(sai->pdata)) { sai 1011 sound/soc/stm/stm32_sai_sub.c if (!sai->mclk_rate) sai 1014 sound/soc/stm/stm32_sai_sub.c if (2 * sai_clk_rate >= 3 * sai->mclk_rate) { sai 1015 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, sai_clk_rate, sai 1016 sound/soc/stm/stm32_sai_sub.c 2 * sai->mclk_rate); sai 1030 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 1031 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, sai_clk_rate, sai 1036 sound/soc/stm/stm32_sai_sub.c if (sai->mclk_rate) { sai 1037 sound/soc/stm/stm32_sai_sub.c mclk_ratio = sai->mclk_rate / rate; sai 1047 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, sai 1051 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, sai_clk_rate, sai 1052 sound/soc/stm/stm32_sai_sub.c sai->mclk_rate); sai 1057 sound/soc/stm/stm32_sai_sub.c den = sai->fs_length * params_rate(params); sai 1058 sound/soc/stm/stm32_sai_sub.c div = stm32_sai_get_clk_div(sai, sai_clk_rate, sai 1066 sound/soc/stm/stm32_sai_sub.c return stm32_sai_set_clk_div(sai, div); sai 1073 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 1076 sound/soc/stm/stm32_sai_sub.c sai->data_size = params_width(params); sai 1078 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 1081 sound/soc/stm/stm32_sai_sub.c stm32_sai_set_iec958_status(sai, substream->runtime); sai 1093 sound/soc/stm/stm32_sai_sub.c if (sai->master) sai 1102 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 1111 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 1115 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 1125 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_IMR_REGX, sai 1128 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 1132 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, sai 1138 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) sai 1139 sound/soc/stm/stm32_sai_sub.c sai->spdif_frm_cnt = 0; sai 1151 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = snd_soc_dai_get_drvdata(cpu_dai); sai 1154 sound/soc/stm/stm32_sai_sub.c stm32_sai_sub_reg_up(sai, STM_SAI_IMR_REGX, SAI_XIMR_MASK, 0); sai 1156 sound/soc/stm/stm32_sai_sub.c clk_disable_unprepare(sai->sai_ck); sai 1158 sound/soc/stm/stm32_sai_sub.c spin_lock_irqsave(&sai->irq_lock, flags); sai 1159 sound/soc/stm/stm32_sai_sub.c sai->substream = NULL; sai 1160 sound/soc/stm/stm32_sai_sub.c spin_unlock_irqrestore(&sai->irq_lock, flags); sai 1166 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(cpu_dai->dev); sai 1169 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) { sai 1170 sound/soc/stm/stm32_sai_sub.c dev_dbg(&sai->pdev->dev, "%s: register iec controls", __func__); sai 1172 sound/soc/stm/stm32_sai_sub.c return snd_ctl_add(rtd->pcm->card, snd_ctl_new1(&knew, sai)); sai 1180 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(cpu_dai->dev); sai 1183 sound/soc/stm/stm32_sai_sub.c sai->cpu_dai = cpu_dai; sai 1185 sound/soc/stm/stm32_sai_sub.c sai->dma_params.addr = (dma_addr_t)(sai->phys_addr + STM_SAI_DR_REGX); sai 1191 sound/soc/stm/stm32_sai_sub.c sai->dma_params.maxburst = 4; sai 1192 sound/soc/stm/stm32_sai_sub.c if (sai->pdata->conf.fifo_size < 8) sai 1193 sound/soc/stm/stm32_sai_sub.c sai->dma_params.maxburst = 1; sai 1195 sound/soc/stm/stm32_sai_sub.c sai->dma_params.addr_width = DMA_SLAVE_BUSWIDTH_UNDEFINED; sai 1197 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_PLAYBACK(sai)) sai 1198 sound/soc/stm/stm32_sai_sub.c snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params, NULL); sai 1200 sound/soc/stm/stm32_sai_sub.c snd_soc_dai_init_dma_data(cpu_dai, NULL, &sai->dma_params); sai 1203 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) sai 1207 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_CAPTURE(sai)) sai 1211 sound/soc/stm/stm32_sai_sub.c if (sai->sync == SAI_SYNC_EXTERNAL) { sai 1213 sound/soc/stm/stm32_sai_sub.c ret = sai->pdata->set_sync(sai->pdata, sai->np_sync_provider, sai 1214 sound/soc/stm/stm32_sai_sub.c sai->synco, sai->synci); sai 1220 sound/soc/stm/stm32_sai_sub.c cr1 |= SAI_XCR1_SYNCEN_SET(sai->sync); sai 1222 sound/soc/stm/stm32_sai_sub.c return stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, cr1_mask, cr1); sai 1242 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(cpu_dai->dev); sai 1246 sound/soc/stm/stm32_sai_sub.c unsigned int frm_cnt = sai->spdif_frm_cnt; sai 1256 sound/soc/stm/stm32_sai_sub.c if (sai->iec958.status[byte] & mask) sai 1266 sound/soc/stm/stm32_sai_sub.c sai->spdif_frm_cnt = frm_cnt; sai 1352 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai) sai 1368 sound/soc/stm/stm32_sai_sub.c sai->phys_addr = res->start; sai 1370 sound/soc/stm/stm32_sai_sub.c sai->regmap_config = &stm32_sai_sub_regmap_config_f4; sai 1372 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_HAS_PDM(sai) && STM_SAI_IS_SUB_A(sai)) sai 1373 sound/soc/stm/stm32_sai_sub.c sai->regmap_config = &stm32_sai_sub_regmap_config_h7; sai 1380 sound/soc/stm/stm32_sai_sub.c sai->regmap = devm_regmap_init_mmio(&pdev->dev, base, sai 1381 sound/soc/stm/stm32_sai_sub.c sai->regmap_config); sai 1382 sound/soc/stm/stm32_sai_sub.c if (IS_ERR(sai->regmap)) { sai 1384 sound/soc/stm/stm32_sai_sub.c return PTR_ERR(sai->regmap); sai 1389 sound/soc/stm/stm32_sai_sub.c sai->dir = SNDRV_PCM_STREAM_PLAYBACK; sai 1391 sound/soc/stm/stm32_sai_sub.c sai->dir = SNDRV_PCM_STREAM_CAPTURE; sai 1398 sound/soc/stm/stm32_sai_sub.c sai->spdif = false; sai 1400 sound/soc/stm/stm32_sai_sub.c if (!STM_SAI_HAS_SPDIF(sai) || sai 1401 sound/soc/stm/stm32_sai_sub.c sai->dir == SNDRV_PCM_STREAM_CAPTURE) { sai 1405 sound/soc/stm/stm32_sai_sub.c stm32_sai_init_iec958_status(sai); sai 1406 sound/soc/stm/stm32_sai_sub.c sai->spdif = true; sai 1407 sound/soc/stm/stm32_sai_sub.c sai->master = true; sai 1418 sound/soc/stm/stm32_sai_sub.c sai->sync = SAI_SYNC_NONE; sai 1426 sound/soc/stm/stm32_sai_sub.c sai->np_sync_provider = of_get_parent(args.np); sai 1427 sound/soc/stm/stm32_sai_sub.c if (!sai->np_sync_provider) { sai 1434 sound/soc/stm/stm32_sai_sub.c sai->sync = SAI_SYNC_INTERNAL; sai 1435 sound/soc/stm/stm32_sai_sub.c if (sai->np_sync_provider != sai->pdata->pdev->dev.of_node) { sai 1436 sound/soc/stm/stm32_sai_sub.c if (!STM_SAI_HAS_EXT_SYNC(sai)) { sai 1442 sound/soc/stm/stm32_sai_sub.c sai->sync = SAI_SYNC_EXTERNAL; sai 1444 sound/soc/stm/stm32_sai_sub.c sai->synci = args.args[0]; sai 1445 sound/soc/stm/stm32_sai_sub.c if (sai->synci < 1 || sai 1446 sound/soc/stm/stm32_sai_sub.c (sai->synci > (SAI_GCR_SYNCIN_MAX + 1))) { sai 1454 sound/soc/stm/stm32_sai_sub.c sai->synco = STM_SAI_SYNC_OUT_A; sai 1458 sound/soc/stm/stm32_sai_sub.c sai->synco = STM_SAI_SYNC_OUT_B; sai 1460 sound/soc/stm/stm32_sai_sub.c if (!sai->synco) { sai 1472 sound/soc/stm/stm32_sai_sub.c sai->sai_ck = devm_clk_get(&pdev->dev, "sai_ck"); sai 1473 sound/soc/stm/stm32_sai_sub.c if (IS_ERR(sai->sai_ck)) { sai 1475 sound/soc/stm/stm32_sai_sub.c return PTR_ERR(sai->sai_ck); sai 1478 sound/soc/stm/stm32_sai_sub.c ret = clk_prepare(sai->pdata->pclk); sai 1482 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_F4(sai->pdata)) sai 1487 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_add_mclk_provider(sai); sai 1491 sound/soc/stm/stm32_sai_sub.c sai->sai_mclk = devm_clk_get(&pdev->dev, "MCLK"); sai 1492 sound/soc/stm/stm32_sai_sub.c if (IS_ERR(sai->sai_mclk)) { sai 1493 sound/soc/stm/stm32_sai_sub.c if (PTR_ERR(sai->sai_mclk) != -ENOENT) sai 1494 sound/soc/stm/stm32_sai_sub.c return PTR_ERR(sai->sai_mclk); sai 1495 sound/soc/stm/stm32_sai_sub.c sai->sai_mclk = NULL; sai 1504 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai; sai 1509 sound/soc/stm/stm32_sai_sub.c sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL); sai 1510 sound/soc/stm/stm32_sai_sub.c if (!sai) sai 1516 sound/soc/stm/stm32_sai_sub.c sai->id = (uintptr_t)of_id->data; sai 1518 sound/soc/stm/stm32_sai_sub.c sai->pdev = pdev; sai 1519 sound/soc/stm/stm32_sai_sub.c mutex_init(&sai->ctrl_lock); sai 1520 sound/soc/stm/stm32_sai_sub.c spin_lock_init(&sai->irq_lock); sai 1521 sound/soc/stm/stm32_sai_sub.c platform_set_drvdata(pdev, sai); sai 1523 sound/soc/stm/stm32_sai_sub.c sai->pdata = dev_get_drvdata(pdev->dev.parent); sai 1524 sound/soc/stm/stm32_sai_sub.c if (!sai->pdata) { sai 1529 sound/soc/stm/stm32_sai_sub.c ret = stm32_sai_sub_parse_of(pdev, sai); sai 1533 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_IS_PLAYBACK(sai)) sai 1534 sound/soc/stm/stm32_sai_sub.c sai->cpu_dai_drv = stm32_sai_playback_dai; sai 1536 sound/soc/stm/stm32_sai_sub.c sai->cpu_dai_drv = stm32_sai_capture_dai; sai 1537 sound/soc/stm/stm32_sai_sub.c sai->cpu_dai_drv.name = dev_name(&pdev->dev); sai 1539 sound/soc/stm/stm32_sai_sub.c ret = devm_request_irq(&pdev->dev, sai->pdata->irq, stm32_sai_isr, sai 1540 sound/soc/stm/stm32_sai_sub.c IRQF_SHARED, dev_name(&pdev->dev), sai); sai 1546 sound/soc/stm/stm32_sai_sub.c if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) sai 1556 sound/soc/stm/stm32_sai_sub.c &sai->cpu_dai_drv, 1); sai 1565 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(&pdev->dev); sai 1567 sound/soc/stm/stm32_sai_sub.c clk_unprepare(sai->pdata->pclk); sai 1577 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(dev); sai 1580 sound/soc/stm/stm32_sai_sub.c ret = clk_enable(sai->pdata->pclk); sai 1584 sound/soc/stm/stm32_sai_sub.c regcache_cache_only(sai->regmap, true); sai 1585 sound/soc/stm/stm32_sai_sub.c regcache_mark_dirty(sai->regmap); sai 1587 sound/soc/stm/stm32_sai_sub.c clk_disable(sai->pdata->pclk); sai 1594 sound/soc/stm/stm32_sai_sub.c struct stm32_sai_sub_data *sai = dev_get_drvdata(dev); sai 1597 sound/soc/stm/stm32_sai_sub.c ret = clk_enable(sai->pdata->pclk); sai 1601 sound/soc/stm/stm32_sai_sub.c regcache_cache_only(sai->regmap, false); sai 1602 sound/soc/stm/stm32_sai_sub.c ret = regcache_sync(sai->regmap); sai 1604 sound/soc/stm/stm32_sai_sub.c clk_disable(sai->pdata->pclk);