[alsa-devel] [PATCH v6] ALSA: Add SoC on-chip internal memory support for DMA buffer allocation

Takashi Iwai tiwai at suse.de
Tue Oct 22 15:24:41 CEST 2013


At Tue, 22 Oct 2013 20:49:49 +0800,
Nicole Otsuka wrote:
> 
> On Tue, Oct 22, 2013 at 8:06 PM, Lars-Peter Clausen <lars at metafoo.de> wrote:
> 
> > On 10/22/2013 05:00 AM, Nicolin Chen wrote:
> > [...]
> > > +/**
> > > + * snd_free_dev_iram - free allocated specific memory from on-chip
> > internal memory
> > > + * @dev: DMA device pointer
> > > + * @size: size in bytes of memory to free
> > > + * @ptr: cpu-view address returned from snd_malloc_dev_iram
> > > + *
> > > + * This function requires iram phandle provided via of_node
> > > + */
> > > +void snd_free_dev_iram(struct device *dev, size_t size, void *ptr)
> > > +{
> > > +     struct gen_pool *pool = NULL;
> > > +
> > > +     if (!dev->of_node)
> > > +             return;
> > > +
> > > +     pool = of_get_named_gen_pool(dev->of_node, "iram", 0);
> > > +     if (!pool)
> > > +             return;
> >
> > I've had a closer look at the other SNDRV_DMA_TYPE implementations and I
> > think a better way to handle this is to assign the pool to the
> > snd_dma_buffer's private_data field and then use it here instead of looking
> > the pool up again. This will also make it easier to use a non-OF lookup
> > scheme.
> >
> 
> > By saving the pool to pdata during the allocating? Hmm..that should be
> nicer.
> > Just need to change the parameter "struct device *" to "struct gen_pool
> *" directly
> > I'll see what I can do to refine it. Thank you for the suggestion.

I guess Lars meant to use simply snd_dma_buffer.private_data field for
storing the pool pointer in snd_malloc_dev_iram(), and use this
pointer instead of calling of_get_named_gen_pool() again in
snd_free_dev_iram().


Takashi


More information about the Alsa-devel mailing list