Unverified Commit 7f4aee8f authored by Takashi Iwai's avatar Takashi Iwai Committed by Mark Brown
Browse files

ASoC: amd: Use managed buffer allocation



Clean up the drivers with the new managed buffer allocation API.
The superfluous snd_pcm_lib_malloc_pages() and
snd_pcm_lib_free_pages() calls are dropped.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20191210142614.19405-2-tiwai@suse.de


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2acf6ce2
Loading
Loading
Loading
Loading
+20 −38
Original line number Diff line number Diff line
@@ -836,7 +836,6 @@ static int acp_dma_hw_params(struct snd_soc_component *component,
			     struct snd_pcm_substream *substream,
			     struct snd_pcm_hw_params *params)
{
	int status;
	uint64_t size;
	u32 val = 0;
	struct snd_pcm_runtime *runtime;
@@ -967,13 +966,7 @@ static int acp_dma_hw_params(struct snd_soc_component *component,
	}

	size = params_buffer_bytes(params);
	status = snd_pcm_lib_malloc_pages(substream, size);
	if (status < 0)
		return status;

	memset(substream->runtime->dma_area, 0, params_buffer_bytes(params));

	if (substream->dma_buffer.area) {
	acp_set_sram_bank_state(rtd->acp_mmio, 0, true);
	/* Save for runtime private data */
	rtd->dma_addr = substream->dma_buffer.addr;
@@ -985,17 +978,7 @@ static int acp_dma_hw_params(struct snd_soc_component *component,
	rtd->direction = substream->stream;

	config_acp_dma(rtd->acp_mmio, rtd, adata->asic_type);
		status = 0;
	} else {
		status = -ENOMEM;
	}
	return status;
}

static int acp_dma_hw_free(struct snd_soc_component *component,
			   struct snd_pcm_substream *substream)
{
	return snd_pcm_lib_free_pages(substream);
	return 0;
}

static u64 acp_get_byte_count(struct audio_substream_data *rtd)
@@ -1142,14 +1125,14 @@ static int acp_dma_new(struct snd_soc_component *component,

	switch (adata->asic_type) {
	case CHIP_STONEY:
		snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,
		snd_pcm_set_managed_buffer_all(rtd->pcm,
					       SNDRV_DMA_TYPE_DEV,
					       parent,
					       ST_MIN_BUFFER,
					       ST_MAX_BUFFER);
		break;
	default:
		snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,
		snd_pcm_set_managed_buffer_all(rtd->pcm,
					       SNDRV_DMA_TYPE_DEV,
					       parent,
					       MIN_BUFFER,
@@ -1221,7 +1204,6 @@ static const struct snd_soc_component_driver acp_asoc_platform = {
	.close		= acp_dma_close,
	.ioctl		= snd_soc_pcm_lib_ioctl,
	.hw_params	= acp_dma_hw_params,
	.hw_free	= acp_dma_hw_free,
	.trigger	= acp_dma_trigger,
	.pointer	= acp_dma_pointer,
	.mmap		= acp_dma_mmap,
+6 −24
Original line number Diff line number Diff line
@@ -334,7 +334,6 @@ static int acp3x_dma_hw_params(struct snd_soc_component *component,
			       struct snd_pcm_substream *substream,
			       struct snd_pcm_hw_params *params)
{
	int status;
	u64 size;
	struct snd_pcm_runtime *runtime = substream->runtime;
	struct i2s_stream_instance *rtd = runtime->private_data;
@@ -343,20 +342,10 @@ static int acp3x_dma_hw_params(struct snd_soc_component *component,
		return -EINVAL;

	size = params_buffer_bytes(params);
	status = snd_pcm_lib_malloc_pages(substream, size);
	if (status < 0)
		return status;

	memset(substream->runtime->dma_area, 0, params_buffer_bytes(params));
	if (substream->dma_buffer.area) {
	rtd->dma_addr = substream->dma_buffer.addr;
	rtd->num_pages = (PAGE_ALIGN(size) >> PAGE_SHIFT);
	config_acp3x_dma(rtd, substream->stream);
		status = 0;
	} else {
		status = -ENOMEM;
	}
	return status;
	return 0;
}

static snd_pcm_uframes_t acp3x_dma_pointer(struct snd_soc_component *component,
@@ -381,17 +370,11 @@ static int acp3x_dma_new(struct snd_soc_component *component,
			 struct snd_soc_pcm_runtime *rtd)
{
	struct device *parent = component->dev->parent;
	snd_pcm_lib_preallocate_pages_for_all(rtd->pcm, SNDRV_DMA_TYPE_DEV,
	snd_pcm_set_managed_buffer_all(rtd->pcm, SNDRV_DMA_TYPE_DEV,
				       parent, MIN_BUFFER, MAX_BUFFER);
	return 0;
}

static int acp3x_dma_hw_free(struct snd_soc_component *component,
			     struct snd_pcm_substream *substream)
{
	return snd_pcm_lib_free_pages(substream);
}

static int acp3x_dma_mmap(struct snd_soc_component *component,
			  struct snd_pcm_substream *substream,
			  struct vm_area_struct *vma)
@@ -601,7 +584,6 @@ static const struct snd_soc_component_driver acp3x_i2s_component = {
	.close		= acp3x_dma_close,
	.ioctl		= snd_soc_pcm_lib_ioctl,
	.hw_params	= acp3x_dma_hw_params,
	.hw_free	= acp3x_dma_hw_free,
	.pointer	= acp3x_dma_pointer,
	.mmap		= acp3x_dma_mmap,
	.pcm_construct	= acp3x_dma_new,