Lines Matching refs:ubuf

28 	struct udmabuf *ubuf = vma->vm_private_data;  in udmabuf_vm_fault()  local
31 if (pgoff >= ubuf->pagecount) in udmabuf_vm_fault()
33 vmf->page = ubuf->pages[pgoff]; in udmabuf_vm_fault()
44 struct udmabuf *ubuf = buf->priv; in mmap_udmabuf() local
50 vma->vm_private_data = ubuf; in mmap_udmabuf()
57 struct udmabuf *ubuf = buf->priv; in get_sg_table() local
64 ret = sg_alloc_table_from_pages(sg, ubuf->pages, ubuf->pagecount, in get_sg_table()
65 0, ubuf->pagecount << PAGE_SHIFT, in get_sg_table()
103 struct udmabuf *ubuf = buf->priv; in release_udmabuf() local
104 struct device *dev = ubuf->device->this_device; in release_udmabuf()
107 if (ubuf->sg) in release_udmabuf()
108 put_sg_table(dev, ubuf->sg, DMA_BIDIRECTIONAL); in release_udmabuf()
110 for (pg = 0; pg < ubuf->pagecount; pg++) in release_udmabuf()
111 put_page(ubuf->pages[pg]); in release_udmabuf()
112 kfree(ubuf->pages); in release_udmabuf()
113 kfree(ubuf); in release_udmabuf()
119 struct udmabuf *ubuf = buf->priv; in begin_cpu_udmabuf() local
120 struct device *dev = ubuf->device->this_device; in begin_cpu_udmabuf()
123 if (!ubuf->sg) { in begin_cpu_udmabuf()
124 ubuf->sg = get_sg_table(dev, buf, direction); in begin_cpu_udmabuf()
125 if (IS_ERR(ubuf->sg)) { in begin_cpu_udmabuf()
126 ret = PTR_ERR(ubuf->sg); in begin_cpu_udmabuf()
127 ubuf->sg = NULL; in begin_cpu_udmabuf()
130 dma_sync_sg_for_cpu(dev, ubuf->sg->sgl, ubuf->sg->nents, in begin_cpu_udmabuf()
140 struct udmabuf *ubuf = buf->priv; in end_cpu_udmabuf() local
141 struct device *dev = ubuf->device->this_device; in end_cpu_udmabuf()
143 if (!ubuf->sg) in end_cpu_udmabuf()
146 dma_sync_sg_for_device(dev, ubuf->sg->sgl, ubuf->sg->nents, direction); in end_cpu_udmabuf()
169 struct udmabuf *ubuf; in udmabuf_create() local
176 ubuf = kzalloc(sizeof(*ubuf), GFP_KERNEL); in udmabuf_create()
177 if (!ubuf) in udmabuf_create()
186 ubuf->pagecount += list[i].size >> PAGE_SHIFT; in udmabuf_create()
187 if (ubuf->pagecount > pglimit) in udmabuf_create()
191 if (!ubuf->pagecount) in udmabuf_create()
194 ubuf->pages = kmalloc_array(ubuf->pagecount, sizeof(*ubuf->pages), in udmabuf_create()
196 if (!ubuf->pages) { in udmabuf_create()
225 ubuf->pages[pgbuf++] = page; in udmabuf_create()
232 exp_info.size = ubuf->pagecount << PAGE_SHIFT; in udmabuf_create()
233 exp_info.priv = ubuf; in udmabuf_create()
236 ubuf->device = device; in udmabuf_create()
250 put_page(ubuf->pages[--pgbuf]); in udmabuf_create()
253 kfree(ubuf->pages); in udmabuf_create()
254 kfree(ubuf); in udmabuf_create()