Lines Matching refs:vmw_tt

279 static void vmw_ttm_unmap_from_dma(struct vmw_ttm_tt *vmw_tt)  in vmw_ttm_unmap_from_dma()  argument
281 struct device *dev = vmw_tt->dev_priv->drm.dev; in vmw_ttm_unmap_from_dma()
283 dma_unmap_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0); in vmw_ttm_unmap_from_dma()
284 vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents; in vmw_ttm_unmap_from_dma()
300 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_for_dma() argument
302 struct device *dev = vmw_tt->dev_priv->drm.dev; in vmw_ttm_map_for_dma()
304 return dma_map_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0); in vmw_ttm_map_for_dma()
317 static int vmw_ttm_map_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_dma() argument
319 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_map_dma()
321 struct vmw_sg_table *vsgt = &vmw_tt->vsgt; in vmw_ttm_map_dma()
332 if (vmw_tt->mapped) in vmw_ttm_map_dma()
336 vsgt->pages = vmw_tt->dma_ttm.pages; in vmw_ttm_map_dma()
337 vsgt->num_pages = vmw_tt->dma_ttm.num_pages; in vmw_ttm_map_dma()
338 vsgt->addrs = vmw_tt->dma_ttm.dma_address; in vmw_ttm_map_dma()
339 vsgt->sgt = &vmw_tt->sgt; in vmw_ttm_map_dma()
348 vmw_tt->sg_alloc_size = sgt_size + sgl_size * vsgt->num_pages; in vmw_ttm_map_dma()
349 ret = ttm_mem_global_alloc(glob, vmw_tt->sg_alloc_size, &ctx); in vmw_ttm_map_dma()
354 &vmw_tt->sgt, vsgt->pages, vsgt->num_pages, 0, in vmw_ttm_map_dma()
360 if (vsgt->num_pages > vmw_tt->sgt.orig_nents) { in vmw_ttm_map_dma()
363 vmw_tt->sgt.orig_nents); in vmw_ttm_map_dma()
366 vmw_tt->sg_alloc_size -= over_alloc; in vmw_ttm_map_dma()
369 ret = vmw_ttm_map_for_dma(vmw_tt); in vmw_ttm_map_dma()
379 vmw_tt->vsgt.num_regions = 0; in vmw_ttm_map_dma()
384 vmw_tt->vsgt.num_regions++; in vmw_ttm_map_dma()
388 vmw_tt->mapped = true; in vmw_ttm_map_dma()
392 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_map_dma()
393 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_map_dma()
395 ttm_mem_global_free(glob, vmw_tt->sg_alloc_size); in vmw_ttm_map_dma()
408 static void vmw_ttm_unmap_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_dma() argument
410 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unmap_dma()
412 if (!vmw_tt->vsgt.sgt) in vmw_ttm_unmap_dma()
418 vmw_ttm_unmap_from_dma(vmw_tt); in vmw_ttm_unmap_dma()
419 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_unmap_dma()
420 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_unmap_dma()
422 vmw_tt->sg_alloc_size); in vmw_ttm_unmap_dma()
427 vmw_tt->mapped = false; in vmw_ttm_unmap_dma()
443 struct vmw_ttm_tt *vmw_tt = in vmw_bo_sg_table() local
446 return &vmw_tt->vsgt; in vmw_bo_sg_table()
567 struct vmw_ttm_tt *vmw_tt = container_of(ttm, struct vmw_ttm_tt, in vmw_ttm_unpopulate() local
573 if (vmw_tt->mob) { in vmw_ttm_unpopulate()
574 vmw_mob_destroy(vmw_tt->mob); in vmw_ttm_unpopulate()
575 vmw_tt->mob = NULL; in vmw_ttm_unpopulate()
578 vmw_ttm_unmap_dma(vmw_tt); in vmw_ttm_unpopulate()
748 struct vmw_ttm_tt *vmw_tt = in vmw_bo_create_and_populate() local
750 ret = vmw_ttm_map_dma(vmw_tt); in vmw_bo_create_and_populate()