Lines Matching refs:dma_obj

73 	struct drm_gem_dma_object *dma_obj;  in __drm_gem_dma_create()  local
81 dma_obj = to_drm_gem_dma_obj(gem_obj); in __drm_gem_dma_create()
83 dma_obj = kzalloc(sizeof(*dma_obj), GFP_KERNEL); in __drm_gem_dma_create()
84 if (!dma_obj) in __drm_gem_dma_create()
86 gem_obj = &dma_obj->base; in __drm_gem_dma_create()
96 dma_obj->map_noncoherent = false; in __drm_gem_dma_create()
109 return dma_obj; in __drm_gem_dma_create()
112 kfree(dma_obj); in __drm_gem_dma_create()
137 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_create() local
142 dma_obj = __drm_gem_dma_create(drm, size, false); in drm_gem_dma_create()
143 if (IS_ERR(dma_obj)) in drm_gem_dma_create()
144 return dma_obj; in drm_gem_dma_create()
146 if (dma_obj->map_noncoherent) { in drm_gem_dma_create()
147 dma_obj->vaddr = dma_alloc_noncoherent(drm->dev, size, in drm_gem_dma_create()
148 &dma_obj->dma_addr, in drm_gem_dma_create()
152 dma_obj->vaddr = dma_alloc_wc(drm->dev, size, in drm_gem_dma_create()
153 &dma_obj->dma_addr, in drm_gem_dma_create()
156 if (!dma_obj->vaddr) { in drm_gem_dma_create()
163 return dma_obj; in drm_gem_dma_create()
166 drm_gem_object_put(&dma_obj->base); in drm_gem_dma_create()
195 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_create_with_handle() local
199 dma_obj = drm_gem_dma_create(drm, size); in drm_gem_dma_create_with_handle()
200 if (IS_ERR(dma_obj)) in drm_gem_dma_create_with_handle()
201 return dma_obj; in drm_gem_dma_create_with_handle()
203 gem_obj = &dma_obj->base; in drm_gem_dma_create_with_handle()
215 return dma_obj; in drm_gem_dma_create_with_handle()
226 void drm_gem_dma_free(struct drm_gem_dma_object *dma_obj) in drm_gem_dma_free() argument
228 struct drm_gem_object *gem_obj = &dma_obj->base; in drm_gem_dma_free()
229 struct iosys_map map = IOSYS_MAP_INIT_VADDR(dma_obj->vaddr); in drm_gem_dma_free()
232 if (dma_obj->vaddr) in drm_gem_dma_free()
234 drm_prime_gem_destroy(gem_obj, dma_obj->sgt); in drm_gem_dma_free()
235 } else if (dma_obj->vaddr) { in drm_gem_dma_free()
236 if (dma_obj->map_noncoherent) in drm_gem_dma_free()
237 dma_free_noncoherent(gem_obj->dev->dev, dma_obj->base.size, in drm_gem_dma_free()
238 dma_obj->vaddr, dma_obj->dma_addr, in drm_gem_dma_free()
241 dma_free_wc(gem_obj->dev->dev, dma_obj->base.size, in drm_gem_dma_free()
242 dma_obj->vaddr, dma_obj->dma_addr); in drm_gem_dma_free()
247 kfree(dma_obj); in drm_gem_dma_free()
270 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_dumb_create_internal() local
278 dma_obj = drm_gem_dma_create_with_handle(file_priv, drm, args->size, in drm_gem_dma_dumb_create_internal()
280 return PTR_ERR_OR_ZERO(dma_obj); in drm_gem_dma_dumb_create_internal()
306 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_dumb_create() local
311 dma_obj = drm_gem_dma_create_with_handle(file_priv, drm, args->size, in drm_gem_dma_dumb_create()
313 return PTR_ERR_OR_ZERO(dma_obj); in drm_gem_dma_dumb_create()
346 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_get_unmapped_area() local
385 dma_obj = to_drm_gem_dma_obj(obj); in drm_gem_dma_get_unmapped_area()
389 return dma_obj->vaddr ? (unsigned long)dma_obj->vaddr : -EINVAL; in drm_gem_dma_get_unmapped_area()
402 void drm_gem_dma_print_info(const struct drm_gem_dma_object *dma_obj, in drm_gem_dma_print_info() argument
405 drm_printf_indent(p, indent, "dma_addr=%pad\n", &dma_obj->dma_addr); in drm_gem_dma_print_info()
406 drm_printf_indent(p, indent, "vaddr=%p\n", dma_obj->vaddr); in drm_gem_dma_print_info()
421 struct sg_table *drm_gem_dma_get_sg_table(struct drm_gem_dma_object *dma_obj) in drm_gem_dma_get_sg_table() argument
423 struct drm_gem_object *obj = &dma_obj->base; in drm_gem_dma_get_sg_table()
431 ret = dma_get_sgtable(obj->dev->dev, sgt, dma_obj->vaddr, in drm_gem_dma_get_sg_table()
432 dma_obj->dma_addr, obj->size); in drm_gem_dma_get_sg_table()
466 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_prime_import_sg_table() local
473 dma_obj = __drm_gem_dma_create(dev, attach->dmabuf->size, true); in drm_gem_dma_prime_import_sg_table()
474 if (IS_ERR(dma_obj)) in drm_gem_dma_prime_import_sg_table()
475 return ERR_CAST(dma_obj); in drm_gem_dma_prime_import_sg_table()
477 dma_obj->dma_addr = sg_dma_address(sgt->sgl); in drm_gem_dma_prime_import_sg_table()
478 dma_obj->sgt = sgt; in drm_gem_dma_prime_import_sg_table()
480 drm_dbg_prime(dev, "dma_addr = %pad, size = %zu\n", &dma_obj->dma_addr, in drm_gem_dma_prime_import_sg_table()
483 return &dma_obj->base; in drm_gem_dma_prime_import_sg_table()
501 int drm_gem_dma_vmap(struct drm_gem_dma_object *dma_obj, in drm_gem_dma_vmap() argument
504 iosys_map_set_vaddr(map, dma_obj->vaddr); in drm_gem_dma_vmap()
522 int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma) in drm_gem_dma_mmap() argument
524 struct drm_gem_object *obj = &dma_obj->base; in drm_gem_dma_mmap()
535 if (dma_obj->map_noncoherent) { in drm_gem_dma_mmap()
538 ret = dma_mmap_pages(dma_obj->base.dev->dev, in drm_gem_dma_mmap()
540 virt_to_page(dma_obj->vaddr)); in drm_gem_dma_mmap()
542 ret = dma_mmap_wc(dma_obj->base.dev->dev, vma, dma_obj->vaddr, in drm_gem_dma_mmap()
543 dma_obj->dma_addr, in drm_gem_dma_mmap()
578 struct drm_gem_dma_object *dma_obj; in drm_gem_dma_prime_import_sg_table_vmap() local
595 dma_obj = to_drm_gem_dma_obj(obj); in drm_gem_dma_prime_import_sg_table_vmap()
596 dma_obj->vaddr = map.vaddr; in drm_gem_dma_prime_import_sg_table_vmap()