Lines Matching refs:dobj

52 	struct armada_gem_object *dobj = drm_to_armada_gem(obj);  in armada_gem_free_object()  local
54 DRM_DEBUG_DRIVER("release obj %p\n", dobj); in armada_gem_free_object()
56 drm_gem_free_mmap_offset(&dobj->obj); in armada_gem_free_object()
58 if (dobj->page) { in armada_gem_free_object()
60 unsigned int order = get_order(dobj->obj.size); in armada_gem_free_object()
61 __free_pages(dobj->page, order); in armada_gem_free_object()
62 } else if (dobj->linear) { in armada_gem_free_object()
64 drm_mm_remove_node(dobj->linear); in armada_gem_free_object()
65 kfree(dobj->linear); in armada_gem_free_object()
66 if (dobj->addr) in armada_gem_free_object()
67 iounmap(dobj->addr); in armada_gem_free_object()
70 if (dobj->obj.import_attach) { in armada_gem_free_object()
72 if (dobj->sgt) in armada_gem_free_object()
73 dma_buf_unmap_attachment(dobj->obj.import_attach, in armada_gem_free_object()
74 dobj->sgt, DMA_TO_DEVICE); in armada_gem_free_object()
75 drm_prime_gem_destroy(&dobj->obj, NULL); in armada_gem_free_object()
78 drm_gem_object_release(&dobj->obj); in armada_gem_free_object()
80 kfree(dobj); in armada_gem_free_object()
184 armada_gem_map_object(struct drm_device *dev, struct armada_gem_object *dobj) in armada_gem_map_object() argument
187 if (!dobj->addr && dobj->linear) in armada_gem_map_object()
188 dobj->addr = ioremap_wc(dobj->phys_addr, dobj->obj.size); in armada_gem_map_object()
189 return dobj->addr; in armada_gem_map_object()
242 struct armada_gem_object *dobj; in armada_gem_dumb_create() local
250 dobj = armada_gem_alloc_private_object(dev, size); in armada_gem_dumb_create()
251 if (dobj == NULL) in armada_gem_dumb_create()
254 ret = armada_gem_linear_back(dev, dobj); in armada_gem_dumb_create()
258 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_dumb_create()
265 DRM_DEBUG_DRIVER("obj %p size %zu handle %#x\n", dobj, size, handle); in armada_gem_dumb_create()
267 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_dumb_create()
315 struct armada_gem_object *dobj; in armada_gem_create_ioctl() local
325 dobj = armada_gem_alloc_object(dev, size); in armada_gem_create_ioctl()
326 if (dobj == NULL) in armada_gem_create_ioctl()
329 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_create_ioctl()
336 DRM_DEBUG_DRIVER("obj %p size %zu handle %#x\n", dobj, size, handle); in armada_gem_create_ioctl()
338 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_create_ioctl()
347 struct armada_gem_object *dobj; in armada_gem_mmap_ioctl() local
350 dobj = armada_gem_object_lookup(dev, file, args->handle); in armada_gem_mmap_ioctl()
351 if (dobj == NULL) in armada_gem_mmap_ioctl()
354 if (!dobj->obj.filp) { in armada_gem_mmap_ioctl()
355 drm_gem_object_unreference(&dobj->obj); in armada_gem_mmap_ioctl()
359 addr = vm_mmap(dobj->obj.filp, 0, args->size, PROT_READ | PROT_WRITE, in armada_gem_mmap_ioctl()
361 drm_gem_object_unreference(&dobj->obj); in armada_gem_mmap_ioctl()
374 struct armada_gem_object *dobj; in armada_gem_pwrite_ioctl() local
393 dobj = armada_gem_object_lookup(dev, file, args->handle); in armada_gem_pwrite_ioctl()
394 if (dobj == NULL) in armada_gem_pwrite_ioctl()
398 if (!dobj->addr) in armada_gem_pwrite_ioctl()
401 if (args->offset > dobj->obj.size || in armada_gem_pwrite_ioctl()
402 args->size > dobj->obj.size - args->offset) { in armada_gem_pwrite_ioctl()
403 DRM_ERROR("invalid size: object size %u\n", dobj->obj.size); in armada_gem_pwrite_ioctl()
408 if (copy_from_user(dobj->addr + args->offset, ptr, args->size)) { in armada_gem_pwrite_ioctl()
410 } else if (dobj->update) { in armada_gem_pwrite_ioctl()
411 dobj->update(dobj->update_data); in armada_gem_pwrite_ioctl()
416 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_pwrite_ioctl()
426 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_map_dma_buf() local
435 if (dobj->obj.filp) { in armada_gem_prime_map_dma_buf()
439 count = dobj->obj.size / PAGE_SIZE; in armada_gem_prime_map_dma_buf()
443 mapping = file_inode(dobj->obj.filp)->i_mapping; in armada_gem_prime_map_dma_buf()
461 } else if (dobj->page) { in armada_gem_prime_map_dma_buf()
466 sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0); in armada_gem_prime_map_dma_buf()
470 } else if (dobj->linear) { in armada_gem_prime_map_dma_buf()
474 sg_dma_address(sgt->sgl) = dobj->dev_addr; in armada_gem_prime_map_dma_buf()
475 sg_dma_len(sgt->sgl) = dobj->obj.size; in armada_gem_prime_map_dma_buf()
495 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_unmap_dma_buf() local
498 if (!dobj->linear) in armada_gem_prime_unmap_dma_buf()
501 if (dobj->obj.filp) { in armada_gem_prime_unmap_dma_buf()
556 struct armada_gem_object *dobj; in armada_gem_prime_import() local
574 dobj = armada_gem_alloc_private_object(dev, buf->size); in armada_gem_prime_import()
575 if (!dobj) { in armada_gem_prime_import()
580 dobj->obj.import_attach = attach; in armada_gem_prime_import()
588 return &dobj->obj; in armada_gem_prime_import()
591 int armada_gem_map_import(struct armada_gem_object *dobj) in armada_gem_map_import() argument
595 dobj->sgt = dma_buf_map_attachment(dobj->obj.import_attach, in armada_gem_map_import()
597 if (!dobj->sgt) { in armada_gem_map_import()
601 if (IS_ERR(dobj->sgt)) { in armada_gem_map_import()
602 ret = PTR_ERR(dobj->sgt); in armada_gem_map_import()
603 dobj->sgt = NULL; in armada_gem_map_import()
607 if (dobj->sgt->nents > 1) { in armada_gem_map_import()
611 if (sg_dma_len(dobj->sgt->sgl) < dobj->obj.size) { in armada_gem_map_import()
615 dobj->dev_addr = sg_dma_address(dobj->sgt->sgl); in armada_gem_map_import()