rk_obj 45 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c struct rockchip_gem_object *rk_obj; rk_obj 63 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c rk_obj = rockchip_gem_create_object(dev, size, true); rk_obj 64 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c if (IS_ERR(rk_obj)) rk_obj 67 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c private->fbdev_bo = &rk_obj->base; rk_obj 94 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c fbi->screen_base = rk_obj->kvaddr + offset; rk_obj 95 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c fbi->screen_size = rk_obj->base.size; rk_obj 96 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c fbi->fix.smem_len = rk_obj->base.size; rk_obj 100 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c rk_obj->kvaddr, rk_obj 106 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c rockchip_gem_free_object(&rk_obj->base); rk_obj 18 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_iommu_map(struct rockchip_gem_object *rk_obj) rk_obj 20 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_device *drm = rk_obj->base.dev; rk_obj 26 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = drm_mm_insert_node_generic(&private->mm, &rk_obj->mm, rk_obj 27 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->base.size, PAGE_SIZE, rk_obj 36 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_addr = rk_obj->mm.start; rk_obj 38 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = iommu_map_sg(private->domain, rk_obj->dma_addr, rk_obj->sgt->sgl, rk_obj 39 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->sgt->nents, prot); rk_obj 40 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (ret < rk_obj->base.size) { rk_obj 42 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret, rk_obj->base.size); rk_obj 47 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->size = ret; rk_obj 53 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_mm_remove_node(&rk_obj->mm); rk_obj 59 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_iommu_unmap(struct rockchip_gem_object *rk_obj) rk_obj 61 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_device *drm = rk_obj->base.dev; rk_obj 64 drivers/gpu/drm/rockchip/rockchip_drm_gem.c iommu_unmap(private->domain, rk_obj->dma_addr, rk_obj->size); rk_obj 68 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_mm_remove_node(&rk_obj->mm); rk_obj 75 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_get_pages(struct rockchip_gem_object *rk_obj) rk_obj 77 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_device *drm = rk_obj->base.dev; rk_obj 81 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->pages = drm_gem_get_pages(&rk_obj->base); rk_obj 82 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (IS_ERR(rk_obj->pages)) rk_obj 83 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return PTR_ERR(rk_obj->pages); rk_obj 85 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->num_pages = rk_obj->base.size >> PAGE_SHIFT; rk_obj 87 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->sgt = drm_prime_pages_to_sg(rk_obj->pages, rk_obj->num_pages); rk_obj 88 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (IS_ERR(rk_obj->sgt)) { rk_obj 89 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = PTR_ERR(rk_obj->sgt); rk_obj 100 drivers/gpu/drm/rockchip/rockchip_drm_gem.c for_each_sg(rk_obj->sgt->sgl, s, rk_obj->sgt->nents, i) rk_obj 103 drivers/gpu/drm/rockchip/rockchip_drm_gem.c dma_sync_sg_for_device(drm->dev, rk_obj->sgt->sgl, rk_obj->sgt->nents, rk_obj 109 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_gem_put_pages(&rk_obj->base, rk_obj->pages, false, false); rk_obj 113 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static void rockchip_gem_put_pages(struct rockchip_gem_object *rk_obj) rk_obj 115 drivers/gpu/drm/rockchip/rockchip_drm_gem.c sg_free_table(rk_obj->sgt); rk_obj 116 drivers/gpu/drm/rockchip/rockchip_drm_gem.c kfree(rk_obj->sgt); rk_obj 117 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_gem_put_pages(&rk_obj->base, rk_obj->pages, true, true); rk_obj 120 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_alloc_iommu(struct rockchip_gem_object *rk_obj, rk_obj 125 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = rockchip_gem_get_pages(rk_obj); rk_obj 129 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = rockchip_gem_iommu_map(rk_obj); rk_obj 134 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->kvaddr = vmap(rk_obj->pages, rk_obj->num_pages, VM_MAP, rk_obj 136 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (!rk_obj->kvaddr) { rk_obj 146 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_iommu_unmap(rk_obj); rk_obj 148 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_put_pages(rk_obj); rk_obj 153 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_alloc_dma(struct rockchip_gem_object *rk_obj, rk_obj 156 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_gem_object *obj = &rk_obj->base; rk_obj 159 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_attrs = DMA_ATTR_WRITE_COMBINE; rk_obj 162 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_attrs |= DMA_ATTR_NO_KERNEL_MAPPING; rk_obj 164 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->kvaddr = dma_alloc_attrs(drm->dev, obj->size, rk_obj 165 drivers/gpu/drm/rockchip/rockchip_drm_gem.c &rk_obj->dma_addr, GFP_KERNEL, rk_obj 166 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_attrs); rk_obj 167 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (!rk_obj->kvaddr) { rk_obj 175 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj, rk_obj 178 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_gem_object *obj = &rk_obj->base; rk_obj 183 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap); rk_obj 185 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rockchip_gem_alloc_dma(rk_obj, alloc_kmap); rk_obj 188 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static void rockchip_gem_free_iommu(struct rockchip_gem_object *rk_obj) rk_obj 190 drivers/gpu/drm/rockchip/rockchip_drm_gem.c vunmap(rk_obj->kvaddr); rk_obj 191 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_iommu_unmap(rk_obj); rk_obj 192 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_put_pages(rk_obj); rk_obj 195 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj) rk_obj 197 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct drm_gem_object *obj = &rk_obj->base; rk_obj 200 drivers/gpu/drm/rockchip/rockchip_drm_gem.c dma_free_attrs(drm->dev, obj->size, rk_obj->kvaddr, rk_obj->dma_addr, rk_obj 201 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_attrs); rk_obj 204 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj) rk_obj 206 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->pages) rk_obj 207 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_free_iommu(rk_obj); rk_obj 209 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_free_dma(rk_obj); rk_obj 215 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 222 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return vm_map_pages(vma, rk_obj->pages, count); rk_obj 228 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 231 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return dma_mmap_attrs(drm->dev, vma, rk_obj->kvaddr, rk_obj->dma_addr, rk_obj 232 drivers/gpu/drm/rockchip/rockchip_drm_gem.c obj->size, rk_obj->dma_attrs); rk_obj 239 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 247 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->pages) rk_obj 291 drivers/gpu/drm/rockchip/rockchip_drm_gem.c static void rockchip_gem_release_object(struct rockchip_gem_object *rk_obj) rk_obj 293 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_gem_object_release(&rk_obj->base); rk_obj 294 drivers/gpu/drm/rockchip/rockchip_drm_gem.c kfree(rk_obj); rk_obj 300 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj; rk_obj 305 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj = kzalloc(sizeof(*rk_obj), GFP_KERNEL); rk_obj 306 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (!rk_obj) rk_obj 309 drivers/gpu/drm/rockchip/rockchip_drm_gem.c obj = &rk_obj->base; rk_obj 313 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rk_obj; rk_obj 320 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj; rk_obj 323 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj = rockchip_gem_alloc_object(drm, size); rk_obj 324 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (IS_ERR(rk_obj)) rk_obj 325 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rk_obj; rk_obj 327 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = rockchip_gem_alloc_buf(rk_obj, alloc_kmap); rk_obj 331 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rk_obj; rk_obj 334 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_release_object(rk_obj); rk_obj 346 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 350 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_iommu_unmap(rk_obj); rk_obj 352 drivers/gpu/drm/rockchip/rockchip_drm_gem.c dma_unmap_sg(drm->dev, rk_obj->sgt->sgl, rk_obj 353 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->sgt->nents, DMA_BIDIRECTIONAL); rk_obj 355 drivers/gpu/drm/rockchip/rockchip_drm_gem.c drm_prime_gem_destroy(obj, rk_obj->sgt); rk_obj 357 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_free_buf(rk_obj); rk_obj 360 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_release_object(rk_obj); rk_obj 375 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj; rk_obj 379 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj = rockchip_gem_create_object(drm, size, false); rk_obj 380 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (IS_ERR(rk_obj)) rk_obj 381 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return ERR_CAST(rk_obj); rk_obj 383 drivers/gpu/drm/rockchip/rockchip_drm_gem.c obj = &rk_obj->base; rk_obj 396 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rk_obj; rk_obj 415 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj; rk_obj 424 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj = rockchip_gem_create_with_handle(file_priv, dev, args->size, rk_obj 427 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return PTR_ERR_OR_ZERO(rk_obj); rk_obj 438 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 443 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->pages) rk_obj 444 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return drm_prime_pages_to_sg(rk_obj->pages, rk_obj->num_pages); rk_obj 450 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = dma_get_sgtable_attrs(drm->dev, sgt, rk_obj->kvaddr, rk_obj 451 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_addr, obj->size, rk_obj 452 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_attrs); rk_obj 483 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj) rk_obj 485 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->sgt = sg; rk_obj 486 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rockchip_gem_iommu_map(rk_obj); rk_obj 493 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj) rk_obj 507 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->dma_addr = sg_dma_address(sg->sgl); rk_obj 508 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj->sgt = sg; rk_obj 518 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj; rk_obj 521 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rk_obj = rockchip_gem_alloc_object(drm, attach->dmabuf->size); rk_obj 522 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (IS_ERR(rk_obj)) rk_obj 523 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return ERR_CAST(rk_obj); rk_obj 526 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = rockchip_gem_iommu_map_sg(drm, attach, sg, rk_obj); rk_obj 528 drivers/gpu/drm/rockchip/rockchip_drm_gem.c ret = rockchip_gem_dma_map_sg(drm, attach, sg, rk_obj); rk_obj 535 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return &rk_obj->base; rk_obj 538 drivers/gpu/drm/rockchip/rockchip_drm_gem.c rockchip_gem_release_object(rk_obj); rk_obj 544 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 546 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->pages) rk_obj 547 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return vmap(rk_obj->pages, rk_obj->num_pages, VM_MAP, rk_obj 550 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->dma_attrs & DMA_ATTR_NO_KERNEL_MAPPING) rk_obj 553 drivers/gpu/drm/rockchip/rockchip_drm_gem.c return rk_obj->kvaddr; rk_obj 558 drivers/gpu/drm/rockchip/rockchip_drm_gem.c struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); rk_obj 560 drivers/gpu/drm/rockchip/rockchip_drm_gem.c if (rk_obj->pages) { rk_obj 795 drivers/gpu/drm/rockchip/rockchip_drm_vop.c struct rockchip_gem_object *rk_obj, *rk_uv_obj; rk_obj 820 drivers/gpu/drm/rockchip/rockchip_drm_vop.c rk_obj = to_rockchip_obj(obj); rk_obj 835 drivers/gpu/drm/rockchip/rockchip_drm_vop.c dma_addr = rk_obj->dma_addr + offset + fb->offsets[0];