Lines Matching refs:sgt

31 static int sg_alloc_table_from_sg(struct sg_table *sgt, struct scatterlist *sg,  in sg_alloc_table_from_sg()  argument
38 err = sg_alloc_table(sgt, nents, gfp_mask); in sg_alloc_table_from_sg()
42 dst = sgt->sgl; in sg_alloc_table_from_sg()
57 struct sg_table *sgt; in tegra_bo_pin() local
81 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in tegra_bo_pin()
82 if (!sgt) in tegra_bo_pin()
90 err = sg_alloc_table_from_pages(sgt, obj->pages, obj->num_pages, in tegra_bo_pin()
94 } else if (obj->sgt) { in tegra_bo_pin()
101 err = sg_alloc_table_from_sg(sgt, obj->sgt->sgl, in tegra_bo_pin()
102 obj->sgt->orig_nents, GFP_KERNEL); in tegra_bo_pin()
111 err = dma_get_sgtable(dev, sgt, obj->vaddr, obj->iova, in tegra_bo_pin()
117 return sgt; in tegra_bo_pin()
120 kfree(sgt); in tegra_bo_pin()
124 static void tegra_bo_unpin(struct device *dev, struct sg_table *sgt) in tegra_bo_unpin() argument
126 if (sgt) { in tegra_bo_unpin()
127 sg_free_table(sgt); in tegra_bo_unpin()
128 kfree(sgt); in tegra_bo_unpin()
199 bo->size = iommu_map_sgtable(tegra->domain, bo->iova, bo->sgt, prot); in tegra_bo_iommu_map()
266 dma_unmap_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_free()
268 sg_free_table(bo->sgt); in tegra_bo_free()
269 kfree(bo->sgt); in tegra_bo_free()
285 bo->sgt = drm_prime_pages_to_sg(bo->gem.dev, bo->pages, bo->num_pages); in tegra_bo_get_pages()
286 if (IS_ERR(bo->sgt)) { in tegra_bo_get_pages()
287 err = PTR_ERR(bo->sgt); in tegra_bo_get_pages()
291 err = dma_map_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_get_pages()
298 sg_free_table(bo->sgt); in tegra_bo_get_pages()
299 kfree(bo->sgt); in tegra_bo_get_pages()
408 bo->sgt = dma_buf_map_attachment(attach, DMA_TO_DEVICE); in tegra_bo_import()
409 if (IS_ERR(bo->sgt)) { in tegra_bo_import()
410 err = PTR_ERR(bo->sgt); in tegra_bo_import()
425 if (!IS_ERR_OR_NULL(bo->sgt)) in tegra_bo_import()
426 dma_buf_unmap_attachment(attach, bo->sgt, DMA_TO_DEVICE); in tegra_bo_import()
445 dma_buf_unmap_attachment(gem->import_attach, bo->sgt, in tegra_bo_free_object()
553 struct sg_table *sgt; in tegra_gem_prime_map_dma_buf() local
555 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in tegra_gem_prime_map_dma_buf()
556 if (!sgt) in tegra_gem_prime_map_dma_buf()
560 if (sg_alloc_table_from_pages(sgt, bo->pages, bo->num_pages, in tegra_gem_prime_map_dma_buf()
564 if (dma_get_sgtable(attach->dev, sgt, bo->vaddr, bo->iova, in tegra_gem_prime_map_dma_buf()
569 if (dma_map_sgtable(attach->dev, sgt, dir, 0)) in tegra_gem_prime_map_dma_buf()
572 return sgt; in tegra_gem_prime_map_dma_buf()
575 sg_free_table(sgt); in tegra_gem_prime_map_dma_buf()
576 kfree(sgt); in tegra_gem_prime_map_dma_buf()
581 struct sg_table *sgt, in tegra_gem_prime_unmap_dma_buf() argument
588 dma_unmap_sgtable(attach->dev, sgt, dir, 0); in tegra_gem_prime_unmap_dma_buf()
590 sg_free_table(sgt); in tegra_gem_prime_unmap_dma_buf()
591 kfree(sgt); in tegra_gem_prime_unmap_dma_buf()
607 dma_sync_sgtable_for_cpu(drm->dev, bo->sgt, DMA_FROM_DEVICE); in tegra_gem_prime_begin_cpu_access()
620 dma_sync_sgtable_for_device(drm->dev, bo->sgt, DMA_TO_DEVICE); in tegra_gem_prime_end_cpu_access()