Lines Matching refs:sgbuf

727 				       struct snd_dma_sg_fallback *sgbuf)  in __snd_dma_sg_fallback_free()  argument
731 if (sgbuf->pages && sgbuf->addrs) { in __snd_dma_sg_fallback_free()
733 while (i < sgbuf->count) { in __snd_dma_sg_fallback_free()
734 if (!sgbuf->pages[i] || !sgbuf->addrs[i]) in __snd_dma_sg_fallback_free()
736 size = sgbuf->addrs[i] & ~PAGE_MASK; in __snd_dma_sg_fallback_free()
739 if (sgbuf->use_dma_alloc_coherent) in __snd_dma_sg_fallback_free()
741 page_address(sgbuf->pages[i]), in __snd_dma_sg_fallback_free()
742 sgbuf->addrs[i] & PAGE_MASK); in __snd_dma_sg_fallback_free()
744 do_free_pages(page_address(sgbuf->pages[i]), in __snd_dma_sg_fallback_free()
749 kvfree(sgbuf->pages); in __snd_dma_sg_fallback_free()
750 kvfree(sgbuf->addrs); in __snd_dma_sg_fallback_free()
751 kfree(sgbuf); in __snd_dma_sg_fallback_free()
756 struct snd_dma_sg_fallback *sgbuf; in snd_dma_sg_fallback_alloc() local
769 sgbuf = kzalloc(sizeof(*sgbuf), GFP_KERNEL); in snd_dma_sg_fallback_alloc()
770 if (!sgbuf) in snd_dma_sg_fallback_alloc()
772 sgbuf->use_dma_alloc_coherent = cpu_feature_enabled(X86_FEATURE_XENPV); in snd_dma_sg_fallback_alloc()
774 sgbuf->count = size >> PAGE_SHIFT; in snd_dma_sg_fallback_alloc()
775 sgbuf->pages = kvcalloc(sgbuf->count, sizeof(*sgbuf->pages), GFP_KERNEL); in snd_dma_sg_fallback_alloc()
776 sgbuf->addrs = kvcalloc(sgbuf->count, sizeof(*sgbuf->addrs), GFP_KERNEL); in snd_dma_sg_fallback_alloc()
777 if (!sgbuf->pages || !sgbuf->addrs) in snd_dma_sg_fallback_alloc()
780 pagep = sgbuf->pages; in snd_dma_sg_fallback_alloc()
781 addrp = sgbuf->addrs; in snd_dma_sg_fallback_alloc()
785 if (sgbuf->use_dma_alloc_coherent) in snd_dma_sg_fallback_alloc()
809 p = vmap(sgbuf->pages, sgbuf->count, VM_MAP, PAGE_KERNEL); in snd_dma_sg_fallback_alloc()
814 set_pages_array_wc(sgbuf->pages, sgbuf->count); in snd_dma_sg_fallback_alloc()
816 dmab->private_data = sgbuf; in snd_dma_sg_fallback_alloc()
818 dmab->addr = sgbuf->addrs[0] & PAGE_MASK; in snd_dma_sg_fallback_alloc()
822 __snd_dma_sg_fallback_free(dmab, sgbuf); in snd_dma_sg_fallback_alloc()
828 struct snd_dma_sg_fallback *sgbuf = dmab->private_data; in snd_dma_sg_fallback_free() local
831 set_pages_array_wb(sgbuf->pages, sgbuf->count); in snd_dma_sg_fallback_free()
839 struct snd_dma_sg_fallback *sgbuf = dmab->private_data; in snd_dma_sg_fallback_get_addr() local
842 return (sgbuf->addrs[index] & PAGE_MASK) | (offset & ~PAGE_MASK); in snd_dma_sg_fallback_get_addr()
848 struct snd_dma_sg_fallback *sgbuf = dmab->private_data; in snd_dma_sg_fallback_mmap() local
852 return vm_map_pages(area, sgbuf->pages, sgbuf->count); in snd_dma_sg_fallback_mmap()