Lines Matching refs:vmw_tt
345 static void vmw_ttm_unmap_from_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_from_dma() argument
347 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_unmap_from_dma()
349 dma_unmap_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.nents, in vmw_ttm_unmap_from_dma()
351 vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents; in vmw_ttm_unmap_from_dma()
367 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_for_dma() argument
369 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_map_for_dma()
372 ret = dma_map_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.orig_nents, in vmw_ttm_map_for_dma()
377 vmw_tt->sgt.nents = ret; in vmw_ttm_map_for_dma()
392 static int vmw_ttm_map_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_dma() argument
394 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_map_dma()
396 struct vmw_sg_table *vsgt = &vmw_tt->vsgt; in vmw_ttm_map_dma()
403 if (vmw_tt->mapped) in vmw_ttm_map_dma()
407 vsgt->pages = vmw_tt->dma_ttm.ttm.pages; in vmw_ttm_map_dma()
408 vsgt->num_pages = vmw_tt->dma_ttm.ttm.num_pages; in vmw_ttm_map_dma()
409 vsgt->addrs = vmw_tt->dma_ttm.dma_address; in vmw_ttm_map_dma()
410 vsgt->sgt = &vmw_tt->sgt; in vmw_ttm_map_dma()
419 vmw_tt->sg_alloc_size = sgt_size + sgl_size * vsgt->num_pages; in vmw_ttm_map_dma()
420 ret = ttm_mem_global_alloc(glob, vmw_tt->sg_alloc_size, false, in vmw_ttm_map_dma()
425 ret = sg_alloc_table_from_pages(&vmw_tt->sgt, vsgt->pages, in vmw_ttm_map_dma()
433 if (vsgt->num_pages > vmw_tt->sgt.nents) { in vmw_ttm_map_dma()
436 vmw_tt->sgt.nents); in vmw_ttm_map_dma()
439 vmw_tt->sg_alloc_size -= over_alloc; in vmw_ttm_map_dma()
442 ret = vmw_ttm_map_for_dma(vmw_tt); in vmw_ttm_map_dma()
452 vmw_tt->vsgt.num_regions = 0; in vmw_ttm_map_dma()
457 vmw_tt->vsgt.num_regions++; in vmw_ttm_map_dma()
461 vmw_tt->mapped = true; in vmw_ttm_map_dma()
465 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_map_dma()
466 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_map_dma()
468 ttm_mem_global_free(glob, vmw_tt->sg_alloc_size); in vmw_ttm_map_dma()
481 static void vmw_ttm_unmap_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_dma() argument
483 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unmap_dma()
485 if (!vmw_tt->vsgt.sgt) in vmw_ttm_unmap_dma()
491 vmw_ttm_unmap_from_dma(vmw_tt); in vmw_ttm_unmap_dma()
492 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_unmap_dma()
493 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_unmap_dma()
495 vmw_tt->sg_alloc_size); in vmw_ttm_unmap_dma()
500 vmw_tt->mapped = false; in vmw_ttm_unmap_dma()
516 struct vmw_ttm_tt *vmw_tt = in vmw_bo_map_dma() local
519 return vmw_ttm_map_dma(vmw_tt); in vmw_bo_map_dma()
533 struct vmw_ttm_tt *vmw_tt = in vmw_bo_unmap_dma() local
536 vmw_ttm_unmap_dma(vmw_tt); in vmw_bo_unmap_dma()
553 struct vmw_ttm_tt *vmw_tt = in vmw_bo_sg_table() local
556 return &vmw_tt->vsgt; in vmw_bo_sg_table()
637 struct vmw_ttm_tt *vmw_tt = in vmw_ttm_populate() local
639 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_populate()
653 ret = ttm_dma_populate(&vmw_tt->dma_ttm, dev_priv->dev->dev); in vmw_ttm_populate()
664 struct vmw_ttm_tt *vmw_tt = container_of(ttm, struct vmw_ttm_tt, in vmw_ttm_unpopulate() local
666 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unpopulate()
670 if (vmw_tt->mob) { in vmw_ttm_unpopulate()
671 vmw_mob_destroy(vmw_tt->mob); in vmw_ttm_unpopulate()
672 vmw_tt->mob = NULL; in vmw_ttm_unpopulate()
675 vmw_ttm_unmap_dma(vmw_tt); in vmw_ttm_unpopulate()
680 ttm_dma_unpopulate(&vmw_tt->dma_ttm, dev_priv->dev->dev); in vmw_ttm_unpopulate()