Lines Matching refs:vmw_tt
361 static void vmw_ttm_unmap_from_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_from_dma() argument
363 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_unmap_from_dma()
365 dma_unmap_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.nents, in vmw_ttm_unmap_from_dma()
367 vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents; in vmw_ttm_unmap_from_dma()
383 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_for_dma() argument
385 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_map_for_dma()
388 ret = dma_map_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.orig_nents, in vmw_ttm_map_for_dma()
393 vmw_tt->sgt.nents = ret; in vmw_ttm_map_for_dma()
408 static int vmw_ttm_map_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_dma() argument
410 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_map_dma()
412 struct vmw_sg_table *vsgt = &vmw_tt->vsgt; in vmw_ttm_map_dma()
423 if (vmw_tt->mapped) in vmw_ttm_map_dma()
427 vsgt->pages = vmw_tt->dma_ttm.ttm.pages; in vmw_ttm_map_dma()
428 vsgt->num_pages = vmw_tt->dma_ttm.ttm.num_pages; in vmw_ttm_map_dma()
429 vsgt->addrs = vmw_tt->dma_ttm.dma_address; in vmw_ttm_map_dma()
430 vsgt->sgt = &vmw_tt->sgt; in vmw_ttm_map_dma()
439 vmw_tt->sg_alloc_size = sgt_size + sgl_size * vsgt->num_pages; in vmw_ttm_map_dma()
440 ret = ttm_mem_global_alloc(glob, vmw_tt->sg_alloc_size, &ctx); in vmw_ttm_map_dma()
445 (&vmw_tt->sgt, vsgt->pages, vsgt->num_pages, 0, in vmw_ttm_map_dma()
452 if (vsgt->num_pages > vmw_tt->sgt.nents) { in vmw_ttm_map_dma()
455 vmw_tt->sgt.nents); in vmw_ttm_map_dma()
458 vmw_tt->sg_alloc_size -= over_alloc; in vmw_ttm_map_dma()
461 ret = vmw_ttm_map_for_dma(vmw_tt); in vmw_ttm_map_dma()
471 vmw_tt->vsgt.num_regions = 0; in vmw_ttm_map_dma()
476 vmw_tt->vsgt.num_regions++; in vmw_ttm_map_dma()
480 vmw_tt->mapped = true; in vmw_ttm_map_dma()
484 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_map_dma()
485 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_map_dma()
487 ttm_mem_global_free(glob, vmw_tt->sg_alloc_size); in vmw_ttm_map_dma()
500 static void vmw_ttm_unmap_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_dma() argument
502 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unmap_dma()
504 if (!vmw_tt->vsgt.sgt) in vmw_ttm_unmap_dma()
510 vmw_ttm_unmap_from_dma(vmw_tt); in vmw_ttm_unmap_dma()
511 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_unmap_dma()
512 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_unmap_dma()
514 vmw_tt->sg_alloc_size); in vmw_ttm_unmap_dma()
519 vmw_tt->mapped = false; in vmw_ttm_unmap_dma()
535 struct vmw_ttm_tt *vmw_tt = in vmw_bo_map_dma() local
538 return vmw_ttm_map_dma(vmw_tt); in vmw_bo_map_dma()
552 struct vmw_ttm_tt *vmw_tt = in vmw_bo_unmap_dma() local
555 vmw_ttm_unmap_dma(vmw_tt); in vmw_bo_unmap_dma()
572 struct vmw_ttm_tt *vmw_tt = in vmw_bo_sg_table() local
575 return &vmw_tt->vsgt; in vmw_bo_sg_table()
656 struct vmw_ttm_tt *vmw_tt = in vmw_ttm_populate() local
658 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_populate()
672 ret = ttm_dma_populate(&vmw_tt->dma_ttm, dev_priv->dev->dev, in vmw_ttm_populate()
684 struct vmw_ttm_tt *vmw_tt = container_of(ttm, struct vmw_ttm_tt, in vmw_ttm_unpopulate() local
686 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unpopulate()
690 if (vmw_tt->mob) { in vmw_ttm_unpopulate()
691 vmw_mob_destroy(vmw_tt->mob); in vmw_ttm_unpopulate()
692 vmw_tt->mob = NULL; in vmw_ttm_unpopulate()
695 vmw_ttm_unmap_dma(vmw_tt); in vmw_ttm_unpopulate()
700 ttm_dma_unpopulate(&vmw_tt->dma_ttm, dev_priv->dev->dev); in vmw_ttm_unpopulate()