Lines Matching refs:sgt

49 static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt)  in vb2_dc_get_contiguous_size()  argument
52 dma_addr_t expected = sg_dma_address(sgt->sgl); in vb2_dc_get_contiguous_size()
56 for_each_sgtable_dma_sg(sgt, s, i) { in vb2_dc_get_contiguous_size()
96 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_prepare() local
98 if (!sgt) in vb2_dc_prepare()
101 dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir); in vb2_dc_prepare()
107 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_finish() local
109 if (!sgt) in vb2_dc_finish()
112 dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir); in vb2_dc_finish()
211 struct sg_table sgt; member
221 struct sg_table *sgt; in vb2_dc_dmabuf_ops_attach() local
229 sgt = &attach->sgt; in vb2_dc_dmabuf_ops_attach()
233 ret = sg_alloc_table(sgt, buf->sgt_base->orig_nents, GFP_KERNEL); in vb2_dc_dmabuf_ops_attach()
240 wr = sgt->sgl; in vb2_dc_dmabuf_ops_attach()
241 for (i = 0; i < sgt->orig_nents; ++i) { in vb2_dc_dmabuf_ops_attach()
257 struct sg_table *sgt; in vb2_dc_dmabuf_ops_detach() local
262 sgt = &attach->sgt; in vb2_dc_dmabuf_ops_detach()
272 dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir, in vb2_dc_dmabuf_ops_detach()
274 sg_free_table(sgt); in vb2_dc_dmabuf_ops_detach()
285 struct sg_table *sgt; in vb2_dc_dmabuf_ops_map() local
289 sgt = &attach->sgt; in vb2_dc_dmabuf_ops_map()
293 return sgt; in vb2_dc_dmabuf_ops_map()
298 dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir, in vb2_dc_dmabuf_ops_map()
307 if (dma_map_sgtable(db_attach->dev, sgt, dma_dir, in vb2_dc_dmabuf_ops_map()
318 return sgt; in vb2_dc_dmabuf_ops_map()
322 struct sg_table *sgt, enum dma_data_direction dma_dir) in vb2_dc_dmabuf_ops_unmap() argument
375 struct sg_table *sgt; in vb2_dc_get_base_sgt() local
377 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in vb2_dc_get_base_sgt()
378 if (!sgt) { in vb2_dc_get_base_sgt()
383 ret = dma_get_sgtable_attrs(buf->dev, sgt, buf->cookie, buf->dma_addr, in vb2_dc_get_base_sgt()
387 kfree(sgt); in vb2_dc_get_base_sgt()
391 return sgt; in vb2_dc_get_base_sgt()
428 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_put_userptr() local
432 if (sgt) { in vb2_dc_put_userptr()
437 dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dc_put_userptr()
446 sg_free_table(sgt); in vb2_dc_put_userptr()
447 kfree(sgt); in vb2_dc_put_userptr()
464 struct sg_table *sgt; in vb2_dc_get_userptr() local
517 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in vb2_dc_get_userptr()
518 if (!sgt) { in vb2_dc_get_userptr()
524 ret = sg_alloc_table_from_pages(sgt, frame_vector_pages(vec), n_pages, in vb2_dc_get_userptr()
535 if (dma_map_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dc_get_userptr()
542 contig_size = vb2_dc_get_contiguous_size(sgt); in vb2_dc_get_userptr()
550 buf->dma_addr = sg_dma_address(sgt->sgl); in vb2_dc_get_userptr()
551 buf->dma_sgt = sgt; in vb2_dc_get_userptr()
558 dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir, DMA_ATTR_SKIP_CPU_SYNC); in vb2_dc_get_userptr()
561 sg_free_table(sgt); in vb2_dc_get_userptr()
564 kfree(sgt); in vb2_dc_get_userptr()
582 struct sg_table *sgt; in vb2_dc_map_dmabuf() local
596 sgt = dma_buf_map_attachment(buf->db_attach, buf->dma_dir); in vb2_dc_map_dmabuf()
597 if (IS_ERR(sgt)) { in vb2_dc_map_dmabuf()
603 contig_size = vb2_dc_get_contiguous_size(sgt); in vb2_dc_map_dmabuf()
607 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir); in vb2_dc_map_dmabuf()
611 buf->dma_addr = sg_dma_address(sgt->sgl); in vb2_dc_map_dmabuf()
612 buf->dma_sgt = sgt; in vb2_dc_map_dmabuf()
621 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_unmap_dmabuf() local
628 if (WARN_ON(!sgt)) { in vb2_dc_unmap_dmabuf()
637 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir); in vb2_dc_unmap_dmabuf()