Lines Matching refs:sgt

34 static int sg_alloc_table_from_sg(struct sg_table *sgt, struct scatterlist *sg,  in sg_alloc_table_from_sg()  argument
41 err = sg_alloc_table(sgt, nents, gfp_mask); in sg_alloc_table_from_sg()
45 dst = sgt->sgl; in sg_alloc_table_from_sg()
60 struct sg_table *sgt; in tegra_bo_pin() local
84 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in tegra_bo_pin()
85 if (!sgt) in tegra_bo_pin()
93 err = sg_alloc_table_from_pages(sgt, obj->pages, obj->num_pages, in tegra_bo_pin()
97 } else if (obj->sgt) { in tegra_bo_pin()
104 err = sg_alloc_table_from_sg(sgt, obj->sgt->sgl, in tegra_bo_pin()
105 obj->sgt->orig_nents, GFP_KERNEL); in tegra_bo_pin()
114 err = dma_get_sgtable(dev, sgt, obj->vaddr, obj->iova, in tegra_bo_pin()
120 return sgt; in tegra_bo_pin()
123 kfree(sgt); in tegra_bo_pin()
127 static void tegra_bo_unpin(struct device *dev, struct sg_table *sgt) in tegra_bo_unpin() argument
129 if (sgt) { in tegra_bo_unpin()
130 sg_free_table(sgt); in tegra_bo_unpin()
131 kfree(sgt); in tegra_bo_unpin()
207 bo->size = iommu_map_sgtable(tegra->domain, bo->iova, bo->sgt, prot); in tegra_bo_iommu_map()
282 dma_unmap_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_free()
284 sg_free_table(bo->sgt); in tegra_bo_free()
285 kfree(bo->sgt); in tegra_bo_free()
301 bo->sgt = drm_prime_pages_to_sg(bo->gem.dev, bo->pages, bo->num_pages); in tegra_bo_get_pages()
302 if (IS_ERR(bo->sgt)) { in tegra_bo_get_pages()
303 err = PTR_ERR(bo->sgt); in tegra_bo_get_pages()
307 err = dma_map_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_get_pages()
314 sg_free_table(bo->sgt); in tegra_bo_get_pages()
315 kfree(bo->sgt); in tegra_bo_get_pages()
424 bo->sgt = dma_buf_map_attachment(attach, DMA_TO_DEVICE); in tegra_bo_import()
425 if (IS_ERR(bo->sgt)) { in tegra_bo_import()
426 err = PTR_ERR(bo->sgt); in tegra_bo_import()
441 if (!IS_ERR_OR_NULL(bo->sgt)) in tegra_bo_import()
442 dma_buf_unmap_attachment(attach, bo->sgt, DMA_TO_DEVICE); in tegra_bo_import()
461 dma_buf_unmap_attachment(gem->import_attach, bo->sgt, in tegra_bo_free_object()
569 struct sg_table *sgt; in tegra_gem_prime_map_dma_buf() local
571 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in tegra_gem_prime_map_dma_buf()
572 if (!sgt) in tegra_gem_prime_map_dma_buf()
576 if (sg_alloc_table_from_pages(sgt, bo->pages, bo->num_pages, in tegra_gem_prime_map_dma_buf()
580 if (dma_get_sgtable(attach->dev, sgt, bo->vaddr, bo->iova, in tegra_gem_prime_map_dma_buf()
585 if (dma_map_sgtable(attach->dev, sgt, dir, 0)) in tegra_gem_prime_map_dma_buf()
588 return sgt; in tegra_gem_prime_map_dma_buf()
591 sg_free_table(sgt); in tegra_gem_prime_map_dma_buf()
592 kfree(sgt); in tegra_gem_prime_map_dma_buf()
597 struct sg_table *sgt, in tegra_gem_prime_unmap_dma_buf() argument
604 dma_unmap_sgtable(attach->dev, sgt, dir, 0); in tegra_gem_prime_unmap_dma_buf()
606 sg_free_table(sgt); in tegra_gem_prime_unmap_dma_buf()
607 kfree(sgt); in tegra_gem_prime_unmap_dma_buf()
623 dma_sync_sgtable_for_cpu(drm->dev, bo->sgt, DMA_FROM_DEVICE); in tegra_gem_prime_begin_cpu_access()
636 dma_sync_sgtable_for_device(drm->dev, bo->sgt, DMA_TO_DEVICE); in tegra_gem_prime_end_cpu_access()