Lines Matching +full:dma +full:- +full:maxburst

1 // SPDX-License-Identifier: GPL-2.0+
5 #include <linux/clk-provider.h>
18 #include <linux/dma-mapping.h>
21 #include "imx-pcm.h"
32 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL,
34 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL_EXT,
40 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL_EXT,
42 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL,
46 return -EINVAL;
53 struct fsl_aud2htx *aud2htx = dev_get_drvdata(cpu_dai->dev);
55 /* DMA request when number of entries < WTMK_LOW */
56 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL_EXT,
60 regmap_update_bits(aud2htx->regmap, AUD2HTX_IRQ_MASK,
69 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL_EXT,
72 regmap_update_bits(aud2htx->regmap, AUD2HTX_CTRL_EXT,
76 snd_soc_dai_init_dma_data(cpu_dai, &aud2htx->dma_params_tx,
77 &aud2htx->dma_params_rx);
89 .stream_name = "CPU-Playback",
105 .name = "fsl-aud2htx",
176 { .compatible = "fsl,imx8mp-aud2htx",},
193 aud2htx = devm_kzalloc(&pdev->dev, sizeof(*aud2htx), GFP_KERNEL);
195 return -ENOMEM;
197 aud2htx->pdev = pdev;
203 aud2htx->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
205 if (IS_ERR(aud2htx->regmap)) {
206 dev_err(&pdev->dev, "failed to init regmap");
207 return PTR_ERR(aud2htx->regmap);
214 ret = devm_request_irq(&pdev->dev, irq, fsl_aud2htx_isr, 0,
215 dev_name(&pdev->dev), aud2htx);
217 dev_err(&pdev->dev, "failed to claim irq %u: %d\n", irq, ret);
221 aud2htx->bus_clk = devm_clk_get(&pdev->dev, "bus");
222 if (IS_ERR(aud2htx->bus_clk)) {
223 dev_err(&pdev->dev, "failed to get mem clock\n");
224 return PTR_ERR(aud2htx->bus_clk);
227 aud2htx->dma_params_tx.chan_name = "tx";
228 aud2htx->dma_params_tx.maxburst = AUD2HTX_MAXBURST;
229 aud2htx->dma_params_tx.addr = res->start + AUD2HTX_WR;
232 pm_runtime_enable(&pdev->dev);
234 regcache_cache_only(aud2htx->regmap, true);
240 ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
242 dev_err(&pdev->dev, "failed to pcm register\n");
243 pm_runtime_disable(&pdev->dev);
247 ret = devm_snd_soc_register_component(&pdev->dev,
251 dev_err(&pdev->dev, "failed to register ASoC DAI\n");
252 pm_runtime_disable(&pdev->dev);
261 pm_runtime_disable(&pdev->dev);
268 regcache_cache_only(aud2htx->regmap, true);
269 clk_disable_unprepare(aud2htx->bus_clk);
279 ret = clk_prepare_enable(aud2htx->bus_clk);
283 regcache_cache_only(aud2htx->regmap, false);
284 regcache_mark_dirty(aud2htx->regmap);
285 regcache_sync(aud2htx->regmap);
300 .name = "fsl-aud2htx",