Lines Matching +full:dma +full:- +full:maxburst
1 // SPDX-License-Identifier: GPL-2.0
5 // Copyright (C) 2023-2024 Loongson Technology Corporation Limited
11 #include <linux/dma-mapping.h>
58 struct snd_pcm_runtime *runtime = substream->runtime; in loongson_pcm_open()
60 if (substream->pcm->device & 1) { in loongson_pcm_open()
61 runtime->hw.info &= ~SNDRV_PCM_INFO_INTERLEAVED; in loongson_pcm_open()
62 runtime->hw.info |= SNDRV_PCM_INFO_NONINTERLEAVED; in loongson_pcm_open()
65 if (substream->pcm->device & 2) in loongson_pcm_open()
66 runtime->hw.info &= ~(SNDRV_PCM_INFO_MMAP | in loongson_pcm_open()
70 * playback samples are lost if the DMA count is not a multiple in loongson_pcm_open()
71 * of the DMA burst size. Let's add a rule to enforce that. in loongson_pcm_open()
77 snd_pcm_hw_constraint_integer(substream->runtime, in loongson_pcm_open()
115 struct device *dev = &pdev->dev; in loongson_i2s_plat_probe()
123 return -ENOMEM; in loongson_i2s_plat_probe()
130 i2s->reg_base = devm_ioremap_resource(&pdev->dev, res); in loongson_i2s_plat_probe()
131 if (IS_ERR(i2s->reg_base)) in loongson_i2s_plat_probe()
132 return dev_err_probe(dev, PTR_ERR(i2s->reg_base), in loongson_i2s_plat_probe()
135 i2s->regmap = devm_regmap_init_mmio(dev, i2s->reg_base, in loongson_i2s_plat_probe()
137 if (IS_ERR(i2s->regmap)) in loongson_i2s_plat_probe()
138 return dev_err_probe(dev, PTR_ERR(i2s->regmap), in loongson_i2s_plat_probe()
141 i2s->playback_dma_data.addr = res->start + LS_I2S_TX_DATA; in loongson_i2s_plat_probe()
142 i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in loongson_i2s_plat_probe()
143 i2s->playback_dma_data.maxburst = 4; in loongson_i2s_plat_probe()
145 i2s->capture_dma_data.addr = res->start + LS_I2S_RX_DATA; in loongson_i2s_plat_probe()
146 i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in loongson_i2s_plat_probe()
147 i2s->capture_dma_data.maxburst = 4; in loongson_i2s_plat_probe()
152 i2s->clk_rate = clk_get_rate(i2s_clk); in loongson_i2s_plat_probe()
168 { .compatible = "loongson,ls2k1000-i2s" },
176 .name = "loongson-i2s-plat",