Lines Matching defs:sgbuf
690 struct snd_dma_sg_fallback *sgbuf)
695 if (sgbuf->pages && sgbuf->npages) {
697 while (i < sgbuf->count) {
698 size = sgbuf->npages[i];
701 do_free_pages(page_address(sgbuf->pages[i]),
706 kvfree(sgbuf->pages);
707 kvfree(sgbuf->npages);
708 kfree(sgbuf);
715 struct snd_dma_sg_fallback *sgbuf;
722 sgbuf = kzalloc_obj(*sgbuf);
723 if (!sgbuf)
726 sgbuf->count = size >> PAGE_SHIFT;
727 sgbuf->pages = kvzalloc_objs(*sgbuf->pages, sgbuf->count);
728 sgbuf->npages = kvcalloc(sgbuf->count, sizeof(*sgbuf->npages), GFP_KERNEL);
729 if (!sgbuf->pages || !sgbuf->npages)
732 pagep = sgbuf->pages;
749 sgbuf->npages[idx] = npages;
756 if (sg_alloc_table_from_pages(&sgbuf->sgt, sgbuf->pages, sgbuf->count,
757 0, sgbuf->count << PAGE_SHIFT, GFP_KERNEL))
760 if (dma_map_sgtable(dmab->dev.dev, &sgbuf->sgt, DMA_BIDIRECTIONAL, 0))
763 p = vmap(sgbuf->pages, sgbuf->count, VM_MAP, PAGE_KERNEL);
767 dmab->private_data = sgbuf;
773 dma_unmap_sgtable(dmab->dev.dev, &sgbuf->sgt, DMA_BIDIRECTIONAL, 0);
775 sg_free_table(&sgbuf->sgt);
777 __snd_dma_sg_fallback_free(dmab, sgbuf);
783 struct snd_dma_sg_fallback *sgbuf = dmab->private_data;
786 dma_unmap_sgtable(dmab->dev.dev, &sgbuf->sgt, DMA_BIDIRECTIONAL, 0);
787 sg_free_table(&sgbuf->sgt);
794 struct snd_dma_sg_fallback *sgbuf = dmab->private_data;
798 return vm_map_pages(area, sgbuf->pages, sgbuf->count);