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()
72 dma_buf_unmap_attachment(dobj->obj.import_attach, dobj->sgt, in armada_gem_free_object()
74 drm_prime_gem_destroy(&dobj->obj, NULL); in armada_gem_free_object()
77 drm_gem_object_release(&dobj->obj); in armada_gem_free_object()
83 armada_gem_linear_back(struct drm_device *dev, struct armada_gem_object *obj) in armada_gem_linear_back() argument
86 size_t size = obj->obj.size; in armada_gem_linear_back()
88 if (obj->page || obj->linear) in armada_gem_linear_back()
104 obj->addr = page_address(p); in armada_gem_linear_back()
105 obj->phys_addr = page_to_phys(p); in armada_gem_linear_back()
106 obj->page = p; in armada_gem_linear_back()
108 memset(obj->addr, 0, PAGE_ALIGN(size)); in armada_gem_linear_back()
136 if (!obj->page) { in armada_gem_linear_back()
155 obj->linear = node; in armada_gem_linear_back()
158 ptr = ioremap_wc(obj->linear->start, size); in armada_gem_linear_back()
161 drm_mm_remove_node(obj->linear); in armada_gem_linear_back()
163 kfree(obj->linear); in armada_gem_linear_back()
164 obj->linear = NULL; in armada_gem_linear_back()
171 obj->phys_addr = obj->linear->start; in armada_gem_linear_back()
172 obj->dev_addr = obj->linear->start; in armada_gem_linear_back()
175 DRM_DEBUG_DRIVER("obj %p phys %#llx dev %#llx\n", obj, in armada_gem_linear_back()
176 (unsigned long long)obj->phys_addr, in armada_gem_linear_back()
177 (unsigned long long)obj->dev_addr); in armada_gem_linear_back()
187 dobj->addr = ioremap_wc(dobj->phys_addr, dobj->obj.size); in armada_gem_map_object()
194 struct armada_gem_object *obj; in armada_gem_alloc_private_object() local
198 obj = kzalloc(sizeof(*obj), GFP_KERNEL); in armada_gem_alloc_private_object()
199 if (!obj) in armada_gem_alloc_private_object()
202 drm_gem_private_object_init(dev, &obj->obj, size); in armada_gem_alloc_private_object()
203 obj->dev_addr = DMA_ERROR_CODE; in armada_gem_alloc_private_object()
205 DRM_DEBUG_DRIVER("alloc private obj %p size %zu\n", obj, size); in armada_gem_alloc_private_object()
207 return obj; in armada_gem_alloc_private_object()
213 struct armada_gem_object *obj; in armada_gem_alloc_object() local
218 obj = kzalloc(sizeof(*obj), GFP_KERNEL); in armada_gem_alloc_object()
219 if (!obj) in armada_gem_alloc_object()
222 if (drm_gem_object_init(dev, &obj->obj, size)) { in armada_gem_alloc_object()
223 kfree(obj); in armada_gem_alloc_object()
227 obj->dev_addr = DMA_ERROR_CODE; in armada_gem_alloc_object()
229 mapping = file_inode(obj->obj.filp)->i_mapping; in armada_gem_alloc_object()
232 DRM_DEBUG_DRIVER("alloc obj %p size %zu\n", obj, size); in armada_gem_alloc_object()
234 return obj; in armada_gem_alloc_object()
257 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_dumb_create()
266 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_dumb_create()
273 struct armada_gem_object *obj; in armada_gem_dumb_map_offset() local
277 obj = armada_gem_object_lookup(dev, file, handle); in armada_gem_dumb_map_offset()
278 if (!obj) { in armada_gem_dumb_map_offset()
285 if (obj->obj.import_attach) { in armada_gem_dumb_map_offset()
290 ret = drm_gem_create_mmap_offset(&obj->obj); in armada_gem_dumb_map_offset()
292 *offset = drm_vma_node_offset_addr(&obj->obj.vma_node); in armada_gem_dumb_map_offset()
296 drm_gem_object_unreference(&obj->obj); in armada_gem_dumb_map_offset()
328 ret = drm_gem_handle_create(file, &dobj->obj, &handle); in armada_gem_create_ioctl()
337 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_create_ioctl()
353 if (!dobj->obj.filp) { in armada_gem_mmap_ioctl()
354 drm_gem_object_unreference(&dobj->obj); in armada_gem_mmap_ioctl()
358 addr = vm_mmap(dobj->obj.filp, 0, args->size, PROT_READ | PROT_WRITE, in armada_gem_mmap_ioctl()
360 drm_gem_object_unreference(&dobj->obj); in armada_gem_mmap_ioctl()
400 if (args->offset > dobj->obj.size || in armada_gem_pwrite_ioctl()
401 args->size > dobj->obj.size - args->offset) { in armada_gem_pwrite_ioctl()
402 DRM_ERROR("invalid size: object size %u\n", dobj->obj.size); in armada_gem_pwrite_ioctl()
415 drm_gem_object_unreference_unlocked(&dobj->obj); in armada_gem_pwrite_ioctl()
424 struct drm_gem_object *obj = attach->dmabuf->priv; in armada_gem_prime_map_dma_buf() local
425 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_map_dma_buf()
434 if (dobj->obj.filp) { in armada_gem_prime_map_dma_buf()
438 count = dobj->obj.size / PAGE_SIZE; in armada_gem_prime_map_dma_buf()
442 mapping = file_inode(dobj->obj.filp)->i_mapping; in armada_gem_prime_map_dma_buf()
465 sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0); in armada_gem_prime_map_dma_buf()
474 sg_dma_len(sgt->sgl) = dobj->obj.size; in armada_gem_prime_map_dma_buf()
493 struct drm_gem_object *obj = attach->dmabuf->priv; in armada_gem_prime_unmap_dma_buf() local
494 struct armada_gem_object *dobj = drm_to_armada_gem(obj); in armada_gem_prime_unmap_dma_buf()
500 if (dobj->obj.filp) { in armada_gem_prime_unmap_dma_buf()
538 armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, in armada_gem_prime_export() argument
544 exp_info.size = obj->size; in armada_gem_prime_export()
546 exp_info.priv = obj; in armada_gem_prime_export()
558 struct drm_gem_object *obj = buf->priv; in armada_gem_prime_import() local
559 if (obj->dev == dev) { in armada_gem_prime_import()
564 drm_gem_object_reference(obj); in armada_gem_prime_import()
565 return obj; in armada_gem_prime_import()
579 dobj->obj.import_attach = attach; in armada_gem_prime_import()
587 return &dobj->obj; in armada_gem_prime_import()
594 dobj->sgt = dma_buf_map_attachment(dobj->obj.import_attach, in armada_gem_map_import()
610 if (sg_dma_len(dobj->sgt->sgl) < dobj->obj.size) { in armada_gem_map_import()