Lines Matching refs:sgt
46 static inline unsigned int sgt_dma_count_chunks(struct sg_table *sgt) in sgt_dma_count_chunks() argument
48 return sg_dma_count_chunks(sgt->sgl, sgt->nents); in sgt_dma_count_chunks()
87 map->sgt = dma_buf_map_attachment(map->attach, direction); in tegra_bo_pin()
88 if (IS_ERR(map->sgt)) { in tegra_bo_pin()
90 err = PTR_ERR(map->sgt); in tegra_bo_pin()
91 map->sgt = NULL; in tegra_bo_pin()
95 err = sgt_dma_count_chunks(map->sgt); in tegra_bo_pin()
105 map->sgt = kzalloc(sizeof(*map->sgt), GFP_KERNEL); in tegra_bo_pin()
106 if (!map->sgt) { in tegra_bo_pin()
116 err = sg_alloc_table_from_pages(map->sgt, obj->pages, obj->num_pages, 0, gem->size, in tegra_bo_pin()
126 err = dma_get_sgtable(dev, map->sgt, obj->vaddr, obj->iova, gem->size); in tegra_bo_pin()
131 err = dma_map_sgtable(dev, map->sgt, direction, 0); in tegra_bo_pin()
141 map->phys = sg_dma_address(map->sgt->sgl); in tegra_bo_pin()
153 sg_free_table(map->sgt); in tegra_bo_pin()
155 kfree(map->sgt); in tegra_bo_pin()
163 dma_buf_unmap_attachment(map->attach, map->sgt, map->direction); in tegra_bo_unpin()
166 dma_unmap_sgtable(map->dev, map->sgt, map->direction, 0); in tegra_bo_unpin()
167 sg_free_table(map->sgt); in tegra_bo_unpin()
168 kfree(map->sgt); in tegra_bo_unpin()
247 bo->size = iommu_map_sgtable(tegra->domain, bo->iova, bo->sgt, prot); in tegra_bo_iommu_map()
322 dma_unmap_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_free()
324 sg_free_table(bo->sgt); in tegra_bo_free()
325 kfree(bo->sgt); in tegra_bo_free()
341 bo->sgt = drm_prime_pages_to_sg(bo->gem.dev, bo->pages, bo->num_pages); in tegra_bo_get_pages()
342 if (IS_ERR(bo->sgt)) { in tegra_bo_get_pages()
343 err = PTR_ERR(bo->sgt); in tegra_bo_get_pages()
347 err = dma_map_sgtable(drm->dev, bo->sgt, DMA_FROM_DEVICE, 0); in tegra_bo_get_pages()
354 sg_free_table(bo->sgt); in tegra_bo_get_pages()
355 kfree(bo->sgt); in tegra_bo_get_pages()
464 bo->sgt = dma_buf_map_attachment(attach, DMA_TO_DEVICE); in tegra_bo_import()
465 if (IS_ERR(bo->sgt)) { in tegra_bo_import()
466 err = PTR_ERR(bo->sgt); in tegra_bo_import()
481 if (!IS_ERR_OR_NULL(bo->sgt)) in tegra_bo_import()
482 dma_buf_unmap_attachment(attach, bo->sgt, DMA_TO_DEVICE); in tegra_bo_import()
511 dma_buf_unmap_attachment(gem->import_attach, bo->sgt, in tegra_bo_free_object()
618 struct sg_table *sgt; in tegra_gem_prime_map_dma_buf() local
620 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in tegra_gem_prime_map_dma_buf()
621 if (!sgt) in tegra_gem_prime_map_dma_buf()
625 if (sg_alloc_table_from_pages(sgt, bo->pages, bo->num_pages, in tegra_gem_prime_map_dma_buf()
629 if (dma_get_sgtable(attach->dev, sgt, bo->vaddr, bo->iova, in tegra_gem_prime_map_dma_buf()
634 if (dma_map_sgtable(attach->dev, sgt, dir, 0)) in tegra_gem_prime_map_dma_buf()
637 return sgt; in tegra_gem_prime_map_dma_buf()
640 sg_free_table(sgt); in tegra_gem_prime_map_dma_buf()
641 kfree(sgt); in tegra_gem_prime_map_dma_buf()
646 struct sg_table *sgt, in tegra_gem_prime_unmap_dma_buf() argument
653 dma_unmap_sgtable(attach->dev, sgt, dir, 0); in tegra_gem_prime_unmap_dma_buf()
655 sg_free_table(sgt); in tegra_gem_prime_unmap_dma_buf()
656 kfree(sgt); in tegra_gem_prime_unmap_dma_buf()
672 dma_sync_sgtable_for_cpu(drm->dev, bo->sgt, DMA_FROM_DEVICE); in tegra_gem_prime_begin_cpu_access()
685 dma_sync_sgtable_for_device(drm->dev, bo->sgt, DMA_TO_DEVICE); in tegra_gem_prime_end_cpu_access()