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);