Lines Matching refs:dmab

118 static void snd_malloc_dev_iram(struct snd_dma_buffer *dmab, size_t size)  in snd_malloc_dev_iram()  argument
120 struct device *dev = dmab->dev.dev; in snd_malloc_dev_iram()
123 dmab->area = NULL; in snd_malloc_dev_iram()
124 dmab->addr = 0; in snd_malloc_dev_iram()
133 dmab->private_data = pool; in snd_malloc_dev_iram()
135 dmab->area = gen_pool_dma_alloc(pool, size, &dmab->addr); in snd_malloc_dev_iram()
142 static void snd_free_dev_iram(struct snd_dma_buffer *dmab) in snd_free_dev_iram() argument
144 struct gen_pool *pool = dmab->private_data; in snd_free_dev_iram()
146 if (pool && dmab->area) in snd_free_dev_iram()
147 gen_pool_free(pool, (unsigned long)dmab->area, dmab->bytes); in snd_free_dev_iram()
173 struct snd_dma_buffer *dmab) in snd_dma_alloc_pages() argument
177 if (WARN_ON(!dmab)) in snd_dma_alloc_pages()
180 dmab->dev.type = type; in snd_dma_alloc_pages()
181 dmab->dev.dev = device; in snd_dma_alloc_pages()
182 dmab->bytes = 0; in snd_dma_alloc_pages()
185 dmab->area = snd_malloc_pages(size, in snd_dma_alloc_pages()
187 dmab->addr = 0; in snd_dma_alloc_pages()
192 snd_malloc_dev_iram(dmab, size); in snd_dma_alloc_pages()
193 if (dmab->area) in snd_dma_alloc_pages()
198 dmab->dev.type = SNDRV_DMA_TYPE_DEV; in snd_dma_alloc_pages()
201 dmab->area = snd_malloc_dev_pages(device, size, &dmab->addr); in snd_dma_alloc_pages()
206 snd_malloc_sgbuf_pages(device, size, dmab, NULL); in snd_dma_alloc_pages()
211 dmab->area = NULL; in snd_dma_alloc_pages()
212 dmab->addr = 0; in snd_dma_alloc_pages()
215 if (! dmab->area) in snd_dma_alloc_pages()
217 dmab->bytes = size; in snd_dma_alloc_pages()
237 struct snd_dma_buffer *dmab) in snd_dma_alloc_pages_fallback() argument
241 while ((err = snd_dma_alloc_pages(type, device, size, dmab)) < 0) { in snd_dma_alloc_pages_fallback()
253 if (! dmab->area) in snd_dma_alloc_pages_fallback()
265 void snd_dma_free_pages(struct snd_dma_buffer *dmab) in snd_dma_free_pages() argument
267 switch (dmab->dev.type) { in snd_dma_free_pages()
269 snd_free_pages(dmab->area, dmab->bytes); in snd_dma_free_pages()
274 snd_free_dev_iram(dmab); in snd_dma_free_pages()
278 snd_free_dev_pages(dmab->dev.dev, dmab->bytes, dmab->area, dmab->addr); in snd_dma_free_pages()
283 snd_free_sgbuf_pages(dmab); in snd_dma_free_pages()
287 pr_err("snd-malloc: invalid device type %d\n", dmab->dev.type); in snd_dma_free_pages()