Lines Matching refs:g2d_userptr
366 struct g2d_cmdlist_userptr *g2d_userptr = in g2d_userptr_put_dma_addr() local
376 atomic_dec(&g2d_userptr->refcount); in g2d_userptr_put_dma_addr()
378 if (atomic_read(&g2d_userptr->refcount) > 0) in g2d_userptr_put_dma_addr()
381 if (g2d_userptr->in_pool) in g2d_userptr_put_dma_addr()
385 exynos_gem_unmap_sgt_from_dma(drm_dev, g2d_userptr->sgt, in g2d_userptr_put_dma_addr()
388 pages = frame_vector_pages(g2d_userptr->vec); in g2d_userptr_put_dma_addr()
392 for (i = 0; i < frame_vector_count(g2d_userptr->vec); i++) in g2d_userptr_put_dma_addr()
395 put_vaddr_frames(g2d_userptr->vec); in g2d_userptr_put_dma_addr()
396 frame_vector_destroy(g2d_userptr->vec); in g2d_userptr_put_dma_addr()
398 if (!g2d_userptr->out_of_list) in g2d_userptr_put_dma_addr()
399 list_del_init(&g2d_userptr->list); in g2d_userptr_put_dma_addr()
401 sg_free_table(g2d_userptr->sgt); in g2d_userptr_put_dma_addr()
402 kfree(g2d_userptr->sgt); in g2d_userptr_put_dma_addr()
403 kfree(g2d_userptr); in g2d_userptr_put_dma_addr()
414 struct g2d_cmdlist_userptr *g2d_userptr; in g2d_userptr_get_dma_addr() local
429 list_for_each_entry(g2d_userptr, &g2d_priv->userptr_list, list) { in g2d_userptr_get_dma_addr()
430 if (g2d_userptr->userptr == userptr) { in g2d_userptr_get_dma_addr()
435 if (g2d_userptr->size == size) { in g2d_userptr_get_dma_addr()
436 atomic_inc(&g2d_userptr->refcount); in g2d_userptr_get_dma_addr()
437 *obj = (unsigned long)g2d_userptr; in g2d_userptr_get_dma_addr()
439 return &g2d_userptr->dma_addr; in g2d_userptr_get_dma_addr()
449 g2d_userptr->out_of_list = true; in g2d_userptr_get_dma_addr()
450 g2d_userptr->in_pool = false; in g2d_userptr_get_dma_addr()
451 list_del_init(&g2d_userptr->list); in g2d_userptr_get_dma_addr()
457 g2d_userptr = kzalloc(sizeof(*g2d_userptr), GFP_KERNEL); in g2d_userptr_get_dma_addr()
458 if (!g2d_userptr) in g2d_userptr_get_dma_addr()
461 atomic_set(&g2d_userptr->refcount, 1); in g2d_userptr_get_dma_addr()
462 g2d_userptr->size = size; in g2d_userptr_get_dma_addr()
468 g2d_userptr->vec = frame_vector_create(npages); in g2d_userptr_get_dma_addr()
469 if (!g2d_userptr->vec) { in g2d_userptr_get_dma_addr()
474 ret = get_vaddr_frames(start, npages, true, true, g2d_userptr->vec); in g2d_userptr_get_dma_addr()
482 if (frame_vector_to_pages(g2d_userptr->vec) < 0) { in g2d_userptr_get_dma_addr()
494 frame_vector_pages(g2d_userptr->vec), in g2d_userptr_get_dma_addr()
501 g2d_userptr->sgt = sgt; in g2d_userptr_get_dma_addr()
503 ret = exynos_gem_map_sgt_with_dma(drm_dev, g2d_userptr->sgt, in g2d_userptr_get_dma_addr()
510 g2d_userptr->dma_addr = sgt->sgl[0].dma_address; in g2d_userptr_get_dma_addr()
511 g2d_userptr->userptr = userptr; in g2d_userptr_get_dma_addr()
513 list_add_tail(&g2d_userptr->list, &g2d_priv->userptr_list); in g2d_userptr_get_dma_addr()
517 g2d_userptr->in_pool = true; in g2d_userptr_get_dma_addr()
520 *obj = (unsigned long)g2d_userptr; in g2d_userptr_get_dma_addr()
522 return &g2d_userptr->dma_addr; in g2d_userptr_get_dma_addr()
531 put_vaddr_frames(g2d_userptr->vec); in g2d_userptr_get_dma_addr()
534 frame_vector_destroy(g2d_userptr->vec); in g2d_userptr_get_dma_addr()
537 kfree(g2d_userptr); in g2d_userptr_get_dma_addr()
548 struct g2d_cmdlist_userptr *g2d_userptr, *n; in g2d_userptr_free_all() local
550 list_for_each_entry_safe(g2d_userptr, n, &g2d_priv->userptr_list, list) in g2d_userptr_free_all()
551 if (g2d_userptr->in_pool) in g2d_userptr_free_all()
553 (unsigned long)g2d_userptr, in g2d_userptr_free_all()
730 struct drm_exynos_g2d_userptr g2d_userptr; in g2d_map_cmdlist_gem() local
732 if (copy_from_user(&g2d_userptr, (void __user *)handle, in g2d_map_cmdlist_gem()
739 g2d_userptr.size)) { in g2d_map_cmdlist_gem()
745 g2d_userptr.userptr, in g2d_map_cmdlist_gem()
746 g2d_userptr.size, in g2d_map_cmdlist_gem()