[alsa-devel] [PATCH] ALSA: ASoC: davinci-pcm: stub out gen_pool functions for !CONFIG_GENERIC_ALLOCATOR

Daniel Mack zonque at gmail.com
Wed Oct 10 15:27:51 CEST 2012


On 10.10.2012 14:49, Daniel Mack wrote:
> On platforms without CONFIG_GENERIC_ALLOCATOR, these functions can be
> no-ops. The code that uses the memory buffers does the right thing if
> they are NULL.

To avoid confusion: this is meant to go on top of Matt Porter's two sram
related patches for this driver.




> 
> Signed-off-by: Daniel Mack <zonque at gmail.com>
> Cc: Hebbar, Gururaja <gururaja.hebbar at ti.com>
> Cc: Matt Porter <mporter at ti.com>
> Cc: Anil Kumar <anilkumar.v at ti.com>
> ---
> Alternatively, the gen_pool functions could stub out themselves for
> !CONFIG_GENERIC_ALLOCATOR.
> 
>  sound/soc/davinci/davinci-pcm.c | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c
> index 01b3f17..afab81f 100644
> --- a/sound/soc/davinci/davinci-pcm.c
> +++ b/sound/soc/davinci/davinci-pcm.c
> @@ -251,6 +251,7 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data)
>  	}
>  }
>  
> +#ifdef CONFIG_GENERIC_ALLOCATOR
>  static int allocate_sram(struct snd_pcm_substream *substream,
>  		struct gen_pool *sram_pool, unsigned size,
>  		struct snd_pcm_hardware *ppcm)
> @@ -284,6 +285,28 @@ exit1:
>  	return -ENOMEM;
>  }
>  
> +static void davinci_free_sram(struct snd_pcm_substream *substream,
> +			      struct snd_dma_buffer *iram_dma)
> +{
> +	struct davinci_runtime_data *prtd = substream->runtime->private_data;
> +	struct gen_pool *sram_pool = prtd->params->sram_pool;
> +
> +	gen_pool_free(sram_pool, (unsigned) iram_dma->area, iram_dma->bytes);
> +}
> +#else
> +static int allocate_sram(struct snd_pcm_substream *substream,
> +		struct gen_pool *sram_pool, unsigned size,
> +		struct snd_pcm_hardware *ppcm)
> +{
> +	return 0;
> +}
> +
> +static void davinci_free_sram(struct snd_pcm_substream *substream,
> +			      struct snd_dma_buffer *iram_dma)
> +{
> +}
> +#endif
> +
>  /*
>   * Only used with ping/pong.
>   * This is called after runtime->dma_addr, period_bytes and data_type are valid
> @@ -813,11 +836,7 @@ static void davinci_pcm_free(struct snd_pcm *pcm)
>  		buf->area = NULL;
>  		iram_dma = buf->private_data;
>  		if (iram_dma) {
> -			struct davinci_runtime_data *prtd =
> -				substream->runtime->private_data;
> -			struct gen_pool *sram_pool = prtd->params->sram_pool;
> -			gen_pool_free(sram_pool, (unsigned)iram_dma->area,
> -				      iram_dma->bytes);
> +			davinci_free_sram(substream, iram_dma);
>  			kfree(iram_dma);
>  		}
>  	}
> 



More information about the Alsa-devel mailing list