esai_priv 79 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = (struct fsl_esai *)devid; esai_priv 80 sound/soc/fsl/fsl_esai.c struct platform_device *pdev = esai_priv->pdev; esai_priv 84 sound/soc/fsl/fsl_esai.c regmap_read(esai_priv->regmap, REG_ESAI_ESR, &esr); esai_priv 85 sound/soc/fsl/fsl_esai.c regmap_read(esai_priv->regmap, REG_ESAI_SAISR, &saisr); esai_priv 88 sound/soc/fsl/fsl_esai.c esai_priv->reset_at_xrun) { esai_priv 90 sound/soc/fsl/fsl_esai.c tasklet_schedule(&esai_priv->task); esai_priv 141 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 207 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCCR(tx), esai_priv 216 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCCR(tx), esai_priv 236 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 237 sound/soc/fsl/fsl_esai.c struct clk *clksrc = esai_priv->extalclk; esai_priv 238 sound/soc/fsl/fsl_esai.c bool tx = (clk_id <= ESAI_HCKT_EXTAL || esai_priv->synchronous); esai_priv 251 sound/soc/fsl/fsl_esai.c if (freq == esai_priv->hck_rate[tx] && dir == esai_priv->hck_dir[tx]) esai_priv 255 sound/soc/fsl/fsl_esai.c esai_priv->sck_div[tx] = true; esai_priv 258 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCCR(tx), esai_priv 267 sound/soc/fsl/fsl_esai.c clksrc = esai_priv->fsysclk; esai_priv 273 sound/soc/fsl/fsl_esai.c ecr |= esai_priv->synchronous ? ESAI_ECR_ETI : ESAI_ECR_ERI; esai_priv 302 sound/soc/fsl/fsl_esai.c if (ratio == 1 && clksrc == esai_priv->extalclk) { esai_priv 317 sound/soc/fsl/fsl_esai.c esai_priv->sck_div[tx] = false; esai_priv 320 sound/soc/fsl/fsl_esai.c esai_priv->hck_dir[tx] = dir; esai_priv 321 sound/soc/fsl/fsl_esai.c esai_priv->hck_rate[tx] = freq; esai_priv 323 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_ECR, esai_priv 335 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 336 sound/soc/fsl/fsl_esai.c u32 hck_rate = esai_priv->hck_rate[tx]; esai_priv 341 sound/soc/fsl/fsl_esai.c if (esai_priv->slave_mode || esai_priv->sck_rate[tx] == freq) esai_priv 359 sound/soc/fsl/fsl_esai.c if (!esai_priv->sck_div[tx] && (ratio > 16 || ratio == 0)) { esai_priv 365 sound/soc/fsl/fsl_esai.c esai_priv->sck_div[tx] ? 0 : ratio); esai_priv 370 sound/soc/fsl/fsl_esai.c esai_priv->sck_rate[tx] = freq; esai_priv 378 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 380 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCCR, esai_priv 383 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCCR, esai_priv 386 sound/soc/fsl/fsl_esai.c esai_priv->slot_width = slot_width; esai_priv 387 sound/soc/fsl/fsl_esai.c esai_priv->slots = slots; esai_priv 388 sound/soc/fsl/fsl_esai.c esai_priv->tx_mask = tx_mask; esai_priv 389 sound/soc/fsl/fsl_esai.c esai_priv->rx_mask = rx_mask; esai_priv 396 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 450 sound/soc/fsl/fsl_esai.c esai_priv->slave_mode = false; esai_priv 455 sound/soc/fsl/fsl_esai.c esai_priv->slave_mode = true; esai_priv 471 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR, mask, xcr); esai_priv 472 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCR, mask, xcr); esai_priv 476 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCCR, mask, xccr); esai_priv 477 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCCR, mask, xccr); esai_priv 485 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 489 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_SAICR, esai_priv 490 sound/soc/fsl/fsl_esai.c ESAI_SAICR_SYNC, esai_priv->synchronous ? esai_priv 494 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCCR, esai_priv 496 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCCR, esai_priv 508 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 512 sound/soc/fsl/fsl_esai.c u32 pins = DIV_ROUND_UP(channels, esai_priv->slots); esai_priv 518 sound/soc/fsl/fsl_esai.c if (esai_priv->slot_width) esai_priv 519 sound/soc/fsl/fsl_esai.c slot_width = esai_priv->slot_width; esai_priv 521 sound/soc/fsl/fsl_esai.c bclk = params_rate(params) * slot_width * esai_priv->slots; esai_priv 523 sound/soc/fsl/fsl_esai.c ret = fsl_esai_set_bclk(dai, esai_priv->synchronous || tx, bclk); esai_priv 530 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), mask, val); esai_priv 532 sound/soc/fsl/fsl_esai.c if (!tx && esai_priv->synchronous) esai_priv 533 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR, mask, val); esai_priv 536 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), esai_priv 540 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx), esai_priv 545 sound/soc/fsl/fsl_esai.c val = ESAI_xFCR_xWA(width) | ESAI_xFCR_xFWM(esai_priv->fifo_depth) | esai_priv 548 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx), mask, val); esai_priv 551 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR, esai_priv 555 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PRRC, esai_priv 557 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PCRC, esai_priv 562 sound/soc/fsl/fsl_esai.c static int fsl_esai_hw_init(struct fsl_esai *esai_priv) esai_priv 564 sound/soc/fsl/fsl_esai.c struct platform_device *pdev = esai_priv->pdev; esai_priv 568 sound/soc/fsl/fsl_esai.c ret = regmap_update_bits(esai_priv->regmap, REG_ESAI_ECR, esai_priv 580 sound/soc/fsl/fsl_esai.c ret = regmap_update_bits(esai_priv->regmap, REG_ESAI_ECR, esai_priv 588 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PRRC, esai_priv 590 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PCRC, esai_priv 596 sound/soc/fsl/fsl_esai.c static int fsl_esai_register_restore(struct fsl_esai *esai_priv) esai_priv 601 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TFCR, esai_priv 603 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RFCR, esai_priv 606 sound/soc/fsl/fsl_esai.c regcache_mark_dirty(esai_priv->regmap); esai_priv 607 sound/soc/fsl/fsl_esai.c ret = regcache_sync(esai_priv->regmap); esai_priv 612 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TFCR, ESAI_xFCR_xFR, 0); esai_priv 613 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RFCR, ESAI_xFCR_xFR, 0); esai_priv 618 sound/soc/fsl/fsl_esai.c static void fsl_esai_trigger_start(struct fsl_esai *esai_priv, bool tx) esai_priv 620 sound/soc/fsl/fsl_esai.c u8 i, channels = esai_priv->channels[tx]; esai_priv 621 sound/soc/fsl/fsl_esai.c u32 pins = DIV_ROUND_UP(channels, esai_priv->slots); esai_priv 624 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx), esai_priv 629 sound/soc/fsl/fsl_esai.c regmap_write(esai_priv->regmap, REG_ESAI_ETDR, 0x0); esai_priv 643 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), esai_priv 646 sound/soc/fsl/fsl_esai.c mask = tx ? esai_priv->tx_mask : esai_priv->rx_mask; esai_priv 648 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMB(tx), esai_priv 650 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMA(tx), esai_priv 654 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), esai_priv 658 sound/soc/fsl/fsl_esai.c static void fsl_esai_trigger_stop(struct fsl_esai *esai_priv, bool tx) esai_priv 660 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), esai_priv 663 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx), esai_priv 665 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMA(tx), esai_priv 667 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMB(tx), esai_priv 671 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx), esai_priv 673 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx), esai_priv 679 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = (struct fsl_esai *)arg; esai_priv 684 sound/soc/fsl/fsl_esai.c spin_lock_irqsave(&esai_priv->lock, lock_flags); esai_priv 686 sound/soc/fsl/fsl_esai.c regmap_read(esai_priv->regmap, REG_ESAI_TFCR, &tfcr); esai_priv 687 sound/soc/fsl/fsl_esai.c regmap_read(esai_priv->regmap, REG_ESAI_RFCR, &rfcr); esai_priv 692 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_stop(esai_priv, tx); esai_priv 693 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_stop(esai_priv, rx); esai_priv 696 sound/soc/fsl/fsl_esai.c fsl_esai_hw_init(esai_priv); esai_priv 699 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR, esai_priv 701 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCR, esai_priv 705 sound/soc/fsl/fsl_esai.c fsl_esai_register_restore(esai_priv); esai_priv 708 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR, esai_priv 710 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_RCR, esai_priv 712 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PRRC, esai_priv 714 sound/soc/fsl/fsl_esai.c regmap_update_bits(esai_priv->regmap, REG_ESAI_PCRC, esai_priv 719 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_start(esai_priv, tx); esai_priv 721 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_start(esai_priv, rx); esai_priv 723 sound/soc/fsl/fsl_esai.c spin_unlock_irqrestore(&esai_priv->lock, lock_flags); esai_priv 729 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 733 sound/soc/fsl/fsl_esai.c esai_priv->channels[tx] = substream->runtime->channels; esai_priv 739 sound/soc/fsl/fsl_esai.c spin_lock_irqsave(&esai_priv->lock, lock_flags); esai_priv 740 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_start(esai_priv, tx); esai_priv 741 sound/soc/fsl/fsl_esai.c spin_unlock_irqrestore(&esai_priv->lock, lock_flags); esai_priv 746 sound/soc/fsl/fsl_esai.c spin_lock_irqsave(&esai_priv->lock, lock_flags); esai_priv 747 sound/soc/fsl/fsl_esai.c fsl_esai_trigger_stop(esai_priv, tx); esai_priv 748 sound/soc/fsl/fsl_esai.c spin_unlock_irqrestore(&esai_priv->lock, lock_flags); esai_priv 768 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); esai_priv 770 sound/soc/fsl/fsl_esai.c snd_soc_dai_init_dma_data(dai, &esai_priv->dma_params_tx, esai_priv 771 sound/soc/fsl/fsl_esai.c &esai_priv->dma_params_rx); esai_priv 922 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv; esai_priv 928 sound/soc/fsl/fsl_esai.c esai_priv = devm_kzalloc(&pdev->dev, sizeof(*esai_priv), GFP_KERNEL); esai_priv 929 sound/soc/fsl/fsl_esai.c if (!esai_priv) esai_priv 932 sound/soc/fsl/fsl_esai.c esai_priv->pdev = pdev; esai_priv 933 sound/soc/fsl/fsl_esai.c snprintf(esai_priv->name, sizeof(esai_priv->name), "%pOFn", np); esai_priv 937 sound/soc/fsl/fsl_esai.c esai_priv->reset_at_xrun = true; esai_priv 945 sound/soc/fsl/fsl_esai.c esai_priv->regmap = devm_regmap_init_mmio_clk(&pdev->dev, esai_priv 947 sound/soc/fsl/fsl_esai.c if (IS_ERR(esai_priv->regmap)) { esai_priv 949 sound/soc/fsl/fsl_esai.c PTR_ERR(esai_priv->regmap)); esai_priv 950 sound/soc/fsl/fsl_esai.c return PTR_ERR(esai_priv->regmap); esai_priv 953 sound/soc/fsl/fsl_esai.c esai_priv->coreclk = devm_clk_get(&pdev->dev, "core"); esai_priv 954 sound/soc/fsl/fsl_esai.c if (IS_ERR(esai_priv->coreclk)) { esai_priv 956 sound/soc/fsl/fsl_esai.c PTR_ERR(esai_priv->coreclk)); esai_priv 957 sound/soc/fsl/fsl_esai.c return PTR_ERR(esai_priv->coreclk); esai_priv 960 sound/soc/fsl/fsl_esai.c esai_priv->extalclk = devm_clk_get(&pdev->dev, "extal"); esai_priv 961 sound/soc/fsl/fsl_esai.c if (IS_ERR(esai_priv->extalclk)) esai_priv 963 sound/soc/fsl/fsl_esai.c PTR_ERR(esai_priv->extalclk)); esai_priv 965 sound/soc/fsl/fsl_esai.c esai_priv->fsysclk = devm_clk_get(&pdev->dev, "fsys"); esai_priv 966 sound/soc/fsl/fsl_esai.c if (IS_ERR(esai_priv->fsysclk)) esai_priv 968 sound/soc/fsl/fsl_esai.c PTR_ERR(esai_priv->fsysclk)); esai_priv 970 sound/soc/fsl/fsl_esai.c esai_priv->spbaclk = devm_clk_get(&pdev->dev, "spba"); esai_priv 971 sound/soc/fsl/fsl_esai.c if (IS_ERR(esai_priv->spbaclk)) esai_priv 973 sound/soc/fsl/fsl_esai.c PTR_ERR(esai_priv->spbaclk)); esai_priv 980 sound/soc/fsl/fsl_esai.c esai_priv->name, esai_priv); esai_priv 987 sound/soc/fsl/fsl_esai.c esai_priv->slots = 2; esai_priv 990 sound/soc/fsl/fsl_esai.c esai_priv->slave_mode = true; esai_priv 995 sound/soc/fsl/fsl_esai.c esai_priv->fifo_depth = be32_to_cpup(iprop); esai_priv 997 sound/soc/fsl/fsl_esai.c esai_priv->fifo_depth = 64; esai_priv 999 sound/soc/fsl/fsl_esai.c esai_priv->dma_params_tx.maxburst = 16; esai_priv 1000 sound/soc/fsl/fsl_esai.c esai_priv->dma_params_rx.maxburst = 16; esai_priv 1001 sound/soc/fsl/fsl_esai.c esai_priv->dma_params_tx.addr = res->start + REG_ESAI_ETDR; esai_priv 1002 sound/soc/fsl/fsl_esai.c esai_priv->dma_params_rx.addr = res->start + REG_ESAI_ERDR; esai_priv 1004 sound/soc/fsl/fsl_esai.c esai_priv->synchronous = esai_priv 1008 sound/soc/fsl/fsl_esai.c if (esai_priv->synchronous) { esai_priv 1014 sound/soc/fsl/fsl_esai.c dev_set_drvdata(&pdev->dev, esai_priv); esai_priv 1016 sound/soc/fsl/fsl_esai.c spin_lock_init(&esai_priv->lock); esai_priv 1017 sound/soc/fsl/fsl_esai.c ret = fsl_esai_hw_init(esai_priv); esai_priv 1021 sound/soc/fsl/fsl_esai.c esai_priv->tx_mask = 0xFFFFFFFF; esai_priv 1022 sound/soc/fsl/fsl_esai.c esai_priv->rx_mask = 0xFFFFFFFF; esai_priv 1025 sound/soc/fsl/fsl_esai.c regmap_write(esai_priv->regmap, REG_ESAI_TSMA, 0); esai_priv 1026 sound/soc/fsl/fsl_esai.c regmap_write(esai_priv->regmap, REG_ESAI_TSMB, 0); esai_priv 1027 sound/soc/fsl/fsl_esai.c regmap_write(esai_priv->regmap, REG_ESAI_RSMA, 0); esai_priv 1028 sound/soc/fsl/fsl_esai.c regmap_write(esai_priv->regmap, REG_ESAI_RSMB, 0); esai_priv 1037 sound/soc/fsl/fsl_esai.c tasklet_init(&esai_priv->task, fsl_esai_hw_reset, esai_priv 1038 sound/soc/fsl/fsl_esai.c (unsigned long)esai_priv); esai_priv 1042 sound/soc/fsl/fsl_esai.c regcache_cache_only(esai_priv->regmap, true); esai_priv 1053 sound/soc/fsl/fsl_esai.c struct fsl_esai *esai_priv = platform_get_drvdata(pdev); esai_priv 1056 sound/soc/fsl/fsl_esai.c tasklet_kill(&esai_priv->task);