struct resource *res;
const struct of_device_id *match;
struct tegra210_admaif_soc_data *soc_data;
+ unsigned int buffer_size;
match = of_match_device(tegra210_admaif_of_match, &pdev->dev);
if (!match) {
ret = -ENODEV;
goto err_suspend;
}
+ buffer_size = 0;
+ if (of_property_read_u32_index(pdev->dev.of_node,
+ "dma-buffer-size",
+ (i * 2) + 1,
+ &buffer_size) < 0) {
+ dev_dbg(&pdev->dev,
+ "Missing property nvidia,dma-buffer-size\n");
+ }
+ admaif->playback_dma_data[i].buffer_size = buffer_size;
admaif->capture_dma_data[i].wrap = 4;
admaif->capture_dma_data[i].width = 32;
ret = -ENODEV;
goto err_suspend;
}
+ buffer_size = 0;
+ if (of_property_read_u32_index(pdev->dev.of_node,
+ "dma-buffer-size",
+ (i * 2),
+ &buffer_size) < 0) {
+ dev_dbg(&pdev->dev,
+ "Missing property nvidia,dma-buffer-size\n");
+ }
+ admaif->capture_dma_data[i].buffer_size = buffer_size;
}
ret = snd_soc_register_component(&pdev->dev,
{
struct snd_card *card = rtd->card->snd_card;
struct snd_pcm *pcm = rtd->pcm;
+ struct tegra_alt_pcm_dma_params *dmap;
+ size_t buffer_size = size;
int ret = 0;
if (!card->dev->dma_mask)
if (!card->dev->coherent_dma_mask)
card->dev->coherent_dma_mask = tegra_dma_mask;
+ dmap = snd_soc_dai_get_dma_data(rtd->cpu_dai,
+ pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream);
+ if (dmap->buffer_size > size)
+ buffer_size = dmap->buffer_size;
if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {
ret = tegra_alt_pcm_preallocate_dma_buffer(pcm,
SNDRV_PCM_STREAM_PLAYBACK,
- size);
+ buffer_size);
if (ret)
goto err;
}
+ dmap = snd_soc_dai_get_dma_data(rtd->cpu_dai,
+ pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
+ if (dmap->buffer_size > size)
+ buffer_size = dmap->buffer_size;
if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) {
ret = tegra_alt_pcm_preallocate_dma_buffer(pcm,
SNDRV_PCM_STREAM_CAPTURE,
- size);
+ buffer_size);
if (ret)
goto err_free_play;
}