Lines Matching defs:dobj

41 	struct armada_gem_object *dobj = drm_to_armada_gem(obj);
44 DRM_DEBUG_DRIVER("release obj %p\n", dobj);
46 drm_gem_free_mmap_offset(&dobj->obj);
50 if (dobj->page) {
52 unsigned int order = get_order(dobj->obj.size);
53 __free_pages(dobj->page, order);
54 } else if (dobj->linear) {
57 drm_mm_remove_node(dobj->linear);
59 kfree(dobj->linear);
60 if (dobj->addr)
61 iounmap(dobj->addr);
64 if (dobj->obj.import_attach) {
66 if (dobj->sgt)
67 dma_buf_unmap_attachment(dobj->obj.import_attach,
68 dobj->sgt, DMA_TO_DEVICE);
69 drm_prime_gem_destroy(&dobj->obj, NULL);
72 drm_gem_object_release(&dobj->obj);
74 kfree(dobj);
179 armada_gem_map_object(struct drm_device *dev, struct armada_gem_object *dobj)
182 if (!dobj->addr && dobj->linear)
183 dobj->addr = ioremap_wc(dobj->phys_addr, dobj->obj.size);
184 return dobj->addr;
234 struct armada_gem_object *dobj;
242 dobj = armada_gem_alloc_private_object(dev, size);
243 if (dobj == NULL)
246 ret = armada_gem_linear_back(dev, dobj);
250 ret = drm_gem_handle_create(file, &dobj->obj, &handle);
257 DRM_DEBUG_DRIVER("obj %p size %zu handle %#x\n", dobj, size, handle);
259 drm_gem_object_put(&dobj->obj);
268 struct armada_gem_object *dobj;
278 dobj = armada_gem_alloc_object(dev, size);
279 if (dobj == NULL)
282 ret = drm_gem_handle_create(file, &dobj->obj, &handle);
289 DRM_DEBUG_DRIVER("obj %p size %zu handle %#x\n", dobj, size, handle);
291 drm_gem_object_put(&dobj->obj);
300 struct armada_gem_object *dobj;
303 dobj = armada_gem_object_lookup(file, args->handle);
304 if (dobj == NULL)
307 if (!dobj->obj.filp) {
308 drm_gem_object_put(&dobj->obj);
312 addr = vm_mmap(dobj->obj.filp, 0, args->size, PROT_READ | PROT_WRITE,
314 drm_gem_object_put(&dobj->obj);
327 struct armada_gem_object *dobj;
346 dobj = armada_gem_object_lookup(file, args->handle);
347 if (dobj == NULL)
351 if (!dobj->addr)
354 if (args->offset > dobj->obj.size ||
355 args->size > dobj->obj.size - args->offset) {
356 DRM_ERROR("invalid size: object size %u\n", dobj->obj.size);
361 if (copy_from_user(dobj->addr + args->offset, ptr, args->size)) {
363 } else if (dobj->update) {
364 dobj->update(dobj->update_data);
369 drm_gem_object_put(&dobj->obj);
379 struct armada_gem_object *dobj = drm_to_armada_gem(obj);
388 if (dobj->obj.filp) {
392 count = dobj->obj.size / PAGE_SIZE;
396 mapping = dobj->obj.filp->f_mapping;
410 } else if (dobj->page) {
415 sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0);
419 } else if (dobj->linear) {
423 sg_dma_address(sgt->sgl) = dobj->dev_addr;
424 sg_dma_len(sgt->sgl) = dobj->obj.size;
445 struct armada_gem_object *dobj = drm_to_armada_gem(obj);
448 if (!dobj->linear)
451 if (dobj->obj.filp) {
492 struct armada_gem_object *dobj;
510 dobj = armada_gem_alloc_private_object(dev, buf->size);
511 if (!dobj) {
516 dobj->obj.import_attach = attach;
524 return &dobj->obj;
527 int armada_gem_map_import(struct armada_gem_object *dobj)
531 dobj->sgt = dma_buf_map_attachment(dobj->obj.import_attach,
533 if (IS_ERR(dobj->sgt)) {
534 ret = PTR_ERR(dobj->sgt);
535 dobj->sgt = NULL;
539 if (dobj->sgt->nents > 1) {
543 if (sg_dma_len(dobj->sgt->sgl) < dobj->obj.size) {
547 dobj->dev_addr = sg_dma_address(dobj->sgt->sgl);
548 dobj->mapped = true;