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