Lines Matching refs:obj
19 struct armada_gem_object *obj = drm_to_armada_gem(vma->vm_private_data); in armada_gem_vm_fault() local
21 unsigned long pfn = obj->phys_addr >> PAGE_SHIFT; in armada_gem_vm_fault()
50 void armada_gem_free_object(struct drm_gem_object *obj) in armada_gem_free_object() argument
52 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_free_object()
56 drm_gem_free_mmap_offset(&dobj->obj); in armada_gem_free_object()
60 unsigned int order = get_order(dobj->obj.size); in armada_gem_free_object()
70 if (dobj->obj.import_attach) { in armada_gem_free_object()
73 dma_buf_unmap_attachment(dobj->obj.import_attach, 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()
84 armada_gem_linear_back(struct drm_device *dev, struct armada_gem_object *obj) in armada_gem_linear_back() argument
87 size_t size = obj->obj.size; in armada_gem_linear_back()
89 if (obj->page || obj->linear) in armada_gem_linear_back()
105 obj->addr = page_address(p); in armada_gem_linear_back()
106 obj->phys_addr = page_to_phys(p); in armada_gem_linear_back()
107 obj->page = p; in armada_gem_linear_back()
109 memset(obj->addr, 0, PAGE_ALIGN(size)); in armada_gem_linear_back()
137 if (!obj->page) { in armada_gem_linear_back()
156 obj->linear = node; in armada_gem_linear_back()
159 ptr = ioremap_wc(obj->linear->start, size); in armada_gem_linear_back()
162 drm_mm_remove_node(obj->linear); in armada_gem_linear_back()
164 kfree(obj->linear); in armada_gem_linear_back()
165 obj->linear = NULL; in armada_gem_linear_back()
172 obj->phys_addr = obj->linear->start; in armada_gem_linear_back()
173 obj->dev_addr = obj->linear->start; in armada_gem_linear_back()
176 DRM_DEBUG_DRIVER("obj %p phys %#llx dev %#llx\n", obj, in armada_gem_linear_back()
177 (unsigned long long)obj->phys_addr, in armada_gem_linear_back()
178 (unsigned long long)obj->dev_addr); in armada_gem_linear_back()
188 dobj->addr = ioremap_wc(dobj->phys_addr, dobj->obj.size); in armada_gem_map_object()
195 struct armada_gem_object *obj; in armada_gem_alloc_private_object() local
199 obj = kzalloc(sizeof(*obj), GFP_KERNEL); in armada_gem_alloc_private_object()
200 if (!obj) in armada_gem_alloc_private_object()
203 drm_gem_private_object_init(dev, &obj->obj, size); in armada_gem_alloc_private_object()
204 obj->dev_addr = DMA_ERROR_CODE; in armada_gem_alloc_private_object()
206 DRM_DEBUG_DRIVER("alloc private obj %p size %zu\n", obj, size); in armada_gem_alloc_private_object()
208 return obj; in armada_gem_alloc_private_object()
214 struct armada_gem_object *obj; in armada_gem_alloc_object() local
219 obj = kzalloc(sizeof(*obj), GFP_KERNEL); in armada_gem_alloc_object()
220 if (!obj) in armada_gem_alloc_object()
223 if (drm_gem_object_init(dev, &obj->obj, size)) { in armada_gem_alloc_object()
224 kfree(obj); in armada_gem_alloc_object()
228 obj->dev_addr = DMA_ERROR_CODE; in armada_gem_alloc_object()
230 mapping = file_inode(obj->obj.filp)->i_mapping; in armada_gem_alloc_object()
233 DRM_DEBUG_DRIVER("alloc obj %p size %zu\n", obj, size); in armada_gem_alloc_object()
235 return obj; in armada_gem_alloc_object()
258 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_dumb_create()
267 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_dumb_create()
274 struct armada_gem_object *obj; in armada_gem_dumb_map_offset() local
278 obj = armada_gem_object_lookup(dev, file, handle); in armada_gem_dumb_map_offset()
279 if (!obj) { in armada_gem_dumb_map_offset()
286 if (obj->obj.import_attach) { in armada_gem_dumb_map_offset()
291 ret = drm_gem_create_mmap_offset(&obj->obj); in armada_gem_dumb_map_offset()
293 *offset = drm_vma_node_offset_addr(&obj->obj.vma_node); in armada_gem_dumb_map_offset()
297 drm_gem_object_unreference(&obj->obj); in armada_gem_dumb_map_offset()
329 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_create_ioctl()
338 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_create_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()
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()
416 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_pwrite_ioctl()
425 struct drm_gem_object *obj = attach->dmabuf->priv; in armada_gem_prime_map_dma_buf() local
426 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_map_dma_buf()
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()
466 sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0); in armada_gem_prime_map_dma_buf()
475 sg_dma_len(sgt->sgl) = dobj->obj.size; in armada_gem_prime_map_dma_buf()
494 struct drm_gem_object *obj = attach->dmabuf->priv; in armada_gem_prime_unmap_dma_buf() local
495 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_unmap_dma_buf()
501 if (dobj->obj.filp) { in armada_gem_prime_unmap_dma_buf()
539 armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, in armada_gem_prime_export() argument
545 exp_info.size = obj->size; in armada_gem_prime_export()
547 exp_info.priv = obj; in armada_gem_prime_export()
559 struct drm_gem_object *obj = buf->priv; in armada_gem_prime_import() local
560 if (obj->dev == dev) { in armada_gem_prime_import()
565 drm_gem_object_reference(obj); in armada_gem_prime_import()
566 return obj; 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()
595 dobj->sgt = dma_buf_map_attachment(dobj->obj.import_attach, in armada_gem_map_import()
611 if (sg_dma_len(dobj->sgt->sgl) < dobj->obj.size) { in armada_gem_map_import()