Lines Matching refs:vmw_tt

332 static void vmw_ttm_unmap_from_dma(struct vmw_ttm_tt *vmw_tt)  in vmw_ttm_unmap_from_dma()  argument
334 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_unmap_from_dma()
336 dma_unmap_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.nents, in vmw_ttm_unmap_from_dma()
338 vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents; in vmw_ttm_unmap_from_dma()
354 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_for_dma() argument
356 struct device *dev = vmw_tt->dev_priv->dev->dev; in vmw_ttm_map_for_dma()
359 ret = dma_map_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.orig_nents, in vmw_ttm_map_for_dma()
364 vmw_tt->sgt.nents = ret; in vmw_ttm_map_for_dma()
379 static int vmw_ttm_map_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_dma() argument
381 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_map_dma()
383 struct vmw_sg_table *vsgt = &vmw_tt->vsgt; in vmw_ttm_map_dma()
390 if (vmw_tt->mapped) in vmw_ttm_map_dma()
394 vsgt->pages = vmw_tt->dma_ttm.ttm.pages; in vmw_ttm_map_dma()
395 vsgt->num_pages = vmw_tt->dma_ttm.ttm.num_pages; in vmw_ttm_map_dma()
396 vsgt->addrs = vmw_tt->dma_ttm.dma_address; in vmw_ttm_map_dma()
397 vsgt->sgt = &vmw_tt->sgt; in vmw_ttm_map_dma()
406 vmw_tt->sg_alloc_size = sgt_size + sgl_size * vsgt->num_pages; in vmw_ttm_map_dma()
407 ret = ttm_mem_global_alloc(glob, vmw_tt->sg_alloc_size, false, in vmw_ttm_map_dma()
412 ret = sg_alloc_table_from_pages(&vmw_tt->sgt, vsgt->pages, in vmw_ttm_map_dma()
420 if (vsgt->num_pages > vmw_tt->sgt.nents) { in vmw_ttm_map_dma()
423 vmw_tt->sgt.nents); in vmw_ttm_map_dma()
426 vmw_tt->sg_alloc_size -= over_alloc; in vmw_ttm_map_dma()
429 ret = vmw_ttm_map_for_dma(vmw_tt); in vmw_ttm_map_dma()
439 vmw_tt->vsgt.num_regions = 0; in vmw_ttm_map_dma()
444 vmw_tt->vsgt.num_regions++; in vmw_ttm_map_dma()
448 vmw_tt->mapped = true; in vmw_ttm_map_dma()
452 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_map_dma()
453 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_map_dma()
455 ttm_mem_global_free(glob, vmw_tt->sg_alloc_size); in vmw_ttm_map_dma()
468 static void vmw_ttm_unmap_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_dma() argument
470 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unmap_dma()
472 if (!vmw_tt->vsgt.sgt) in vmw_ttm_unmap_dma()
478 vmw_ttm_unmap_from_dma(vmw_tt); in vmw_ttm_unmap_dma()
479 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_unmap_dma()
480 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_unmap_dma()
482 vmw_tt->sg_alloc_size); in vmw_ttm_unmap_dma()
487 vmw_tt->mapped = false; in vmw_ttm_unmap_dma()
503 struct vmw_ttm_tt *vmw_tt = in vmw_bo_map_dma() local
506 return vmw_ttm_map_dma(vmw_tt); in vmw_bo_map_dma()
520 struct vmw_ttm_tt *vmw_tt = in vmw_bo_unmap_dma() local
523 vmw_ttm_unmap_dma(vmw_tt); in vmw_bo_unmap_dma()
540 struct vmw_ttm_tt *vmw_tt = in vmw_bo_sg_table() local
543 return &vmw_tt->vsgt; in vmw_bo_sg_table()
624 struct vmw_ttm_tt *vmw_tt = in vmw_ttm_populate() local
626 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_populate()
640 ret = ttm_dma_populate(&vmw_tt->dma_ttm, dev_priv->dev->dev); in vmw_ttm_populate()
651 struct vmw_ttm_tt *vmw_tt = container_of(ttm, struct vmw_ttm_tt, in vmw_ttm_unpopulate() local
653 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unpopulate()
657 if (vmw_tt->mob) { in vmw_ttm_unpopulate()
658 vmw_mob_destroy(vmw_tt->mob); in vmw_ttm_unpopulate()
659 vmw_tt->mob = NULL; in vmw_ttm_unpopulate()
662 vmw_ttm_unmap_dma(vmw_tt); in vmw_ttm_unpopulate()
667 ttm_dma_unpopulate(&vmw_tt->dma_ttm, dev_priv->dev->dev); in vmw_ttm_unpopulate()