• Home
  • Raw
  • Download

Lines Matching refs:dmab

27 static void snd_malloc_dev_pages(struct snd_dma_buffer *dmab, size_t size)  in snd_malloc_dev_pages()  argument
35 dmab->area = dma_alloc_coherent(dmab->dev.dev, size, &dmab->addr, in snd_malloc_dev_pages()
38 if (dmab->area && dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC) in snd_malloc_dev_pages()
39 set_memory_wc((unsigned long)dmab->area, in snd_malloc_dev_pages()
45 static void snd_free_dev_pages(struct snd_dma_buffer *dmab) in snd_free_dev_pages() argument
48 if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC) in snd_free_dev_pages()
49 set_memory_wb((unsigned long)dmab->area, in snd_free_dev_pages()
50 PAGE_ALIGN(dmab->bytes) >> PAGE_SHIFT); in snd_free_dev_pages()
52 dma_free_coherent(dmab->dev.dev, dmab->bytes, dmab->area, dmab->addr); in snd_free_dev_pages()
63 static void snd_malloc_dev_iram(struct snd_dma_buffer *dmab, size_t size) in snd_malloc_dev_iram() argument
65 struct device *dev = dmab->dev.dev; in snd_malloc_dev_iram()
68 dmab->area = NULL; in snd_malloc_dev_iram()
69 dmab->addr = 0; in snd_malloc_dev_iram()
78 dmab->private_data = pool; in snd_malloc_dev_iram()
80 dmab->area = gen_pool_dma_alloc_align(pool, size, &dmab->addr, in snd_malloc_dev_iram()
88 static void snd_free_dev_iram(struct snd_dma_buffer *dmab) in snd_free_dev_iram() argument
90 struct gen_pool *pool = dmab->private_data; in snd_free_dev_iram()
92 if (pool && dmab->area) in snd_free_dev_iram()
93 gen_pool_free(pool, (unsigned long)dmab->area, dmab->bytes); in snd_free_dev_iram()
127 struct snd_dma_buffer *dmab) in snd_dma_alloc_pages() argument
133 if (WARN_ON(!dmab)) in snd_dma_alloc_pages()
136 dmab->dev.type = type; in snd_dma_alloc_pages()
137 dmab->dev.dev = device; in snd_dma_alloc_pages()
138 dmab->bytes = 0; in snd_dma_alloc_pages()
139 dmab->area = NULL; in snd_dma_alloc_pages()
140 dmab->addr = 0; in snd_dma_alloc_pages()
141 dmab->private_data = NULL; in snd_dma_alloc_pages()
145 dmab->area = alloc_pages_exact(size, gfp); in snd_dma_alloc_pages()
149 dmab->area = __vmalloc(size, gfp); in snd_dma_alloc_pages()
154 snd_malloc_dev_iram(dmab, size); in snd_dma_alloc_pages()
155 if (dmab->area) in snd_dma_alloc_pages()
160 dmab->dev.type = SNDRV_DMA_TYPE_DEV; in snd_dma_alloc_pages()
165 snd_malloc_dev_pages(dmab, size); in snd_dma_alloc_pages()
171 snd_malloc_sgbuf_pages(device, size, dmab, NULL); in snd_dma_alloc_pages()
178 if (! dmab->area) in snd_dma_alloc_pages()
180 dmab->bytes = size; in snd_dma_alloc_pages()
201 struct snd_dma_buffer *dmab) in snd_dma_alloc_pages_fallback() argument
205 while ((err = snd_dma_alloc_pages(type, device, size, dmab)) < 0) { in snd_dma_alloc_pages_fallback()
213 if (! dmab->area) in snd_dma_alloc_pages_fallback()
226 void snd_dma_free_pages(struct snd_dma_buffer *dmab) in snd_dma_free_pages() argument
228 switch (dmab->dev.type) { in snd_dma_free_pages()
230 free_pages_exact(dmab->area, dmab->bytes); in snd_dma_free_pages()
233 vfree(dmab->area); in snd_dma_free_pages()
238 snd_free_dev_iram(dmab); in snd_dma_free_pages()
243 snd_free_dev_pages(dmab); in snd_dma_free_pages()
249 snd_free_sgbuf_pages(dmab); in snd_dma_free_pages()
253 pr_err("snd-malloc: invalid device type %d\n", dmab->dev.type); in snd_dma_free_pages()