]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
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 b239bbff4b5cda71cc756e04442a115689f19384..f4769e19965a55f4be47ca0992fdc3b1fa75dcc3 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;
 }