Lines Matching full:sg
29 struct sg_table *sg; member
90 struct sg_table *sg; in get_sg_table() local
93 sg = kzalloc(sizeof(*sg), GFP_KERNEL); in get_sg_table()
94 if (!sg) in get_sg_table()
96 ret = sg_alloc_table_from_pages(sg, ubuf->pages, ubuf->pagecount, in get_sg_table()
101 ret = dma_map_sgtable(dev, sg, direction, 0); in get_sg_table()
104 return sg; in get_sg_table()
107 sg_free_table(sg); in get_sg_table()
108 kfree(sg); in get_sg_table()
112 static void put_sg_table(struct device *dev, struct sg_table *sg, in put_sg_table() argument
115 dma_unmap_sgtable(dev, sg, direction, 0); in put_sg_table()
116 sg_free_table(sg); in put_sg_table()
117 kfree(sg); in put_sg_table()
127 struct sg_table *sg, in unmap_udmabuf() argument
130 return put_sg_table(at->dev, sg, direction); in unmap_udmabuf()
139 if (ubuf->sg) in release_udmabuf()
140 put_sg_table(dev, ubuf->sg, DMA_BIDIRECTIONAL); in release_udmabuf()
155 if (!ubuf->sg) { in begin_cpu_udmabuf()
156 ubuf->sg = get_sg_table(dev, buf, direction); in begin_cpu_udmabuf()
157 if (IS_ERR(ubuf->sg)) { in begin_cpu_udmabuf()
158 ret = PTR_ERR(ubuf->sg); in begin_cpu_udmabuf()
159 ubuf->sg = NULL; in begin_cpu_udmabuf()
162 dma_sync_sg_for_cpu(dev, ubuf->sg->sgl, ubuf->sg->nents, in begin_cpu_udmabuf()
175 if (!ubuf->sg) in end_cpu_udmabuf()
178 dma_sync_sg_for_device(dev, ubuf->sg->sgl, ubuf->sg->nents, direction); in end_cpu_udmabuf()