Lines Matching refs:vmw_tt
135 static void vmw_ttm_unmap_from_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_from_dma() argument
137 struct device *dev = vmw_tt->dev_priv->drm.dev; in vmw_ttm_unmap_from_dma()
139 dma_unmap_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0); in vmw_ttm_unmap_from_dma()
140 vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents; in vmw_ttm_unmap_from_dma()
156 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_for_dma() argument
158 struct device *dev = vmw_tt->dev_priv->drm.dev; in vmw_ttm_map_for_dma()
160 return dma_map_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0); in vmw_ttm_map_for_dma()
173 static int vmw_ttm_map_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_map_dma() argument
175 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_map_dma()
176 struct vmw_sg_table *vsgt = &vmw_tt->vsgt; in vmw_ttm_map_dma()
179 if (vmw_tt->mapped) in vmw_ttm_map_dma()
183 vsgt->pages = vmw_tt->dma_ttm.pages; in vmw_ttm_map_dma()
184 vsgt->num_pages = vmw_tt->dma_ttm.num_pages; in vmw_ttm_map_dma()
185 vsgt->addrs = vmw_tt->dma_ttm.dma_address; in vmw_ttm_map_dma()
191 if (vmw_tt->dma_ttm.page_flags & TTM_TT_FLAG_EXTERNAL) { in vmw_ttm_map_dma()
192 vsgt->sgt = vmw_tt->dma_ttm.sg; in vmw_ttm_map_dma()
194 vsgt->sgt = &vmw_tt->sgt; in vmw_ttm_map_dma()
195 ret = sg_alloc_table_from_pages_segment(&vmw_tt->sgt, in vmw_ttm_map_dma()
204 ret = vmw_ttm_map_for_dma(vmw_tt); in vmw_ttm_map_dma()
213 vmw_tt->mapped = true; in vmw_ttm_map_dma()
233 static void vmw_ttm_unmap_dma(struct vmw_ttm_tt *vmw_tt) in vmw_ttm_unmap_dma() argument
235 struct vmw_private *dev_priv = vmw_tt->dev_priv; in vmw_ttm_unmap_dma()
237 if (!vmw_tt->vsgt.sgt) in vmw_ttm_unmap_dma()
243 vmw_ttm_unmap_from_dma(vmw_tt); in vmw_ttm_unmap_dma()
244 sg_free_table(vmw_tt->vsgt.sgt); in vmw_ttm_unmap_dma()
245 vmw_tt->vsgt.sgt = NULL; in vmw_ttm_unmap_dma()
250 vmw_tt->mapped = false; in vmw_ttm_unmap_dma()
266 struct vmw_ttm_tt *vmw_tt = in vmw_bo_sg_table() local
269 return &vmw_tt->vsgt; in vmw_bo_sg_table()
381 struct vmw_ttm_tt *vmw_tt = container_of(ttm, struct vmw_ttm_tt, in vmw_ttm_unpopulate() local
390 if (vmw_tt->mob) { in vmw_ttm_unpopulate()
391 vmw_mob_destroy(vmw_tt->mob); in vmw_ttm_unpopulate()
392 vmw_tt->mob = NULL; in vmw_ttm_unpopulate()
395 vmw_ttm_unmap_dma(vmw_tt); in vmw_ttm_unpopulate()
586 struct vmw_ttm_tt *vmw_tt = in vmw_bo_create_and_populate() local
588 ret = vmw_ttm_map_dma(vmw_tt); in vmw_bo_create_and_populate()