Lines Matching refs:ubuf
36 struct udmabuf *ubuf = vma->vm_private_data; in udmabuf_vm_fault() local
40 if (pgoff >= ubuf->pagecount) in udmabuf_vm_fault()
43 pfn = page_to_pfn(ubuf->pages[pgoff]); in udmabuf_vm_fault()
53 struct udmabuf *ubuf = buf->priv; in mmap_udmabuf() local
59 vma->vm_private_data = ubuf; in mmap_udmabuf()
66 struct udmabuf *ubuf = buf->priv; in vmap_udmabuf() local
71 vaddr = vm_map_ram(ubuf->pages, ubuf->pagecount, -1); in vmap_udmabuf()
81 struct udmabuf *ubuf = buf->priv; in vunmap_udmabuf() local
85 vm_unmap_ram(map->vaddr, ubuf->pagecount); in vunmap_udmabuf()
91 struct udmabuf *ubuf = buf->priv; in get_sg_table() local
98 ret = sg_alloc_table_from_pages(sg, ubuf->pages, ubuf->pagecount, in get_sg_table()
99 0, ubuf->pagecount << PAGE_SHIFT, in get_sg_table()
137 struct udmabuf *ubuf = buf->priv; in release_udmabuf() local
138 struct device *dev = ubuf->device->this_device; in release_udmabuf()
141 if (ubuf->sg) in release_udmabuf()
142 put_sg_table(dev, ubuf->sg, DMA_BIDIRECTIONAL); in release_udmabuf()
144 for (pg = 0; pg < ubuf->pagecount; pg++) in release_udmabuf()
145 put_page(ubuf->pages[pg]); in release_udmabuf()
146 kfree(ubuf->pages); in release_udmabuf()
147 kfree(ubuf); in release_udmabuf()
153 struct udmabuf *ubuf = buf->priv; in begin_cpu_udmabuf() local
154 struct device *dev = ubuf->device->this_device; in begin_cpu_udmabuf()
157 if (!ubuf->sg) { in begin_cpu_udmabuf()
158 ubuf->sg = get_sg_table(dev, buf, direction); in begin_cpu_udmabuf()
159 if (IS_ERR(ubuf->sg)) { in begin_cpu_udmabuf()
160 ret = PTR_ERR(ubuf->sg); in begin_cpu_udmabuf()
161 ubuf->sg = NULL; in begin_cpu_udmabuf()
164 dma_sync_sg_for_cpu(dev, ubuf->sg->sgl, ubuf->sg->nents, in begin_cpu_udmabuf()
174 struct udmabuf *ubuf = buf->priv; in end_cpu_udmabuf() local
175 struct device *dev = ubuf->device->this_device; in end_cpu_udmabuf()
177 if (!ubuf->sg) in end_cpu_udmabuf()
180 dma_sync_sg_for_device(dev, ubuf->sg->sgl, ubuf->sg->nents, direction); in end_cpu_udmabuf()
206 struct udmabuf *ubuf; in udmabuf_create() local
213 ubuf = kzalloc(sizeof(*ubuf), GFP_KERNEL); in udmabuf_create()
214 if (!ubuf) in udmabuf_create()
223 ubuf->pagecount += list[i].size >> PAGE_SHIFT; in udmabuf_create()
224 if (ubuf->pagecount > pglimit) in udmabuf_create()
228 if (!ubuf->pagecount) in udmabuf_create()
231 ubuf->pages = kmalloc_array(ubuf->pagecount, sizeof(*ubuf->pages), in udmabuf_create()
233 if (!ubuf->pages) { in udmabuf_create()
262 ubuf->pages[pgbuf++] = page; in udmabuf_create()
269 exp_info.size = ubuf->pagecount << PAGE_SHIFT; in udmabuf_create()
270 exp_info.priv = ubuf; in udmabuf_create()
273 ubuf->device = device; in udmabuf_create()
287 put_page(ubuf->pages[--pgbuf]); in udmabuf_create()
290 kfree(ubuf->pages); in udmabuf_create()
291 kfree(ubuf); in udmabuf_create()