Lines Matching refs:sg
21 struct sg_table *sg; member
58 struct sg_table *sg; in get_sg_table() local
61 sg = kzalloc(sizeof(*sg), GFP_KERNEL); in get_sg_table()
62 if (!sg) in get_sg_table()
64 ret = sg_alloc_table_from_pages(sg, ubuf->pages, ubuf->pagecount, in get_sg_table()
69 ret = dma_map_sgtable(dev, sg, direction, 0); in get_sg_table()
72 return sg; in get_sg_table()
75 sg_free_table(sg); in get_sg_table()
76 kfree(sg); in get_sg_table()
80 static void put_sg_table(struct device *dev, struct sg_table *sg, in put_sg_table() argument
83 dma_unmap_sgtable(dev, sg, direction, 0); in put_sg_table()
84 sg_free_table(sg); in put_sg_table()
85 kfree(sg); in put_sg_table()
95 struct sg_table *sg, in unmap_udmabuf() argument
98 return put_sg_table(at->dev, sg, direction); in unmap_udmabuf()
107 if (ubuf->sg) in release_udmabuf()
108 put_sg_table(dev, ubuf->sg, DMA_BIDIRECTIONAL); in release_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()
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()