ASoC: SOF: pcm: skip DMA buffer pre-allocation
authorKeyon Jie <yang.jie@linux.intel.com>
Fri, 28 Feb 2020 23:18:47 +0000 (17:18 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 2 Mar 2020 14:13:47 +0000 (14:13 +0000)
As discussion in ALSA https://patchwork.kernel.org/patch/11336023/, it
is suggested to skip DMA buffer pre-allocation with passing size=0 when
calling snd_pcm_set_managed_buffer(), to make the full buffer_bytes
range configured in topology file selectable from user space, here do
the corresponding change in SOF PCM driver to implement it.

This change doesn't have dependency to the change that Takashi will do
in the ALSA core by adding total_pcm_alloc_bytes limitation to the
struct snd_card, it passes tests both with or without Takashi's coming
change on SOF CML platform.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Link: https://lore.kernel.org/r/20200228231850.9226-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/pcm.c

index b239bbf..f4769e1 100644 (file)
@@ -601,8 +601,7 @@ static int sof_pcm_new(struct snd_soc_component *component,
 
        snd_pcm_set_managed_buffer(pcm->streams[stream].substream,
                                   SNDRV_DMA_TYPE_DEV_SG, sdev->dev,
-                                  le32_to_cpu(caps->buffer_size_min),
-                                  le32_to_cpu(caps->buffer_size_max));
+                                  0, le32_to_cpu(caps->buffer_size_max));
 capture:
        stream = SNDRV_PCM_STREAM_CAPTURE;
 
@@ -624,8 +623,7 @@ capture:
 
        snd_pcm_set_managed_buffer(pcm->streams[stream].substream,
                                   SNDRV_DMA_TYPE_DEV_SG, sdev->dev,
-                                  le32_to_cpu(caps->buffer_size_min),
-                                  le32_to_cpu(caps->buffer_size_max));
+                                  0, le32_to_cpu(caps->buffer_size_max));
 
        return 0;
 }