Lines Matching +full:single +full:- +full:tt
1 // SPDX-License-Identifier: GPL-2.0+
6 #include <linux/dma-buf.h>
28 lbo->sharing_count++; in lsdc_gem_prime_pin()
45 if (lbo->sharing_count) in lsdc_gem_prime_unpin()
46 lbo->sharing_count--; in lsdc_gem_prime_unpin()
54 struct ttm_tt *tt = tbo->ttm; in lsdc_gem_prime_get_sg_table() local
56 if (!tt) { in lsdc_gem_prime_get_sg_table()
57 drm_err(obj->dev, "sharing a buffer without backing memory\n"); in lsdc_gem_prime_get_sg_table()
58 return ERR_PTR(-ENOMEM); in lsdc_gem_prime_get_sg_table()
61 return drm_prime_pages_to_sg(obj->dev, tt->pages, tt->num_pages); in lsdc_gem_prime_get_sg_table()
78 if (lbo->vmap_count > 0) { in lsdc_gem_object_vmap()
79 ++lbo->vmap_count; in lsdc_gem_object_vmap()
85 drm_err(obj->dev, "pin %p for vmap failed\n", lbo); in lsdc_gem_object_vmap()
89 ret = ttm_bo_vmap(tbo, &lbo->map); in lsdc_gem_object_vmap()
91 drm_err(obj->dev, "ttm bo vmap failed\n"); in lsdc_gem_object_vmap()
96 lbo->vmap_count = 1; in lsdc_gem_object_vmap()
99 *map = lbo->map; in lsdc_gem_object_vmap()
109 if (unlikely(!lbo->vmap_count)) { in lsdc_gem_object_vunmap()
110 drm_warn(obj->dev, "%p is not mapped\n", lbo); in lsdc_gem_object_vunmap()
114 --lbo->vmap_count; in lsdc_gem_object_vunmap()
115 if (lbo->vmap_count == 0) { in lsdc_gem_object_vunmap()
116 ttm_bo_vunmap(tbo, &lbo->map); in lsdc_gem_object_vunmap()
129 drm_warn(obj->dev, "mmap %p failed\n", tbo); in lsdc_gem_object_mmap()
172 gobj = &lbo->tbo.base; in lsdc_gem_object_create()
173 gobj->funcs = &lsdc_gem_object_funcs; in lsdc_gem_object_create()
176 mutex_lock(&ldev->gem.mutex); in lsdc_gem_object_create()
177 list_add_tail(&lbo->list, &ldev->gem.objects); in lsdc_gem_object_create()
178 mutex_unlock(&ldev->gem.mutex); in lsdc_gem_object_create()
188 struct dma_resv *resv = attach->dmabuf->resv; in lsdc_prime_import_sg_table()
189 u64 size = attach->dmabuf->size; in lsdc_prime_import_sg_table()
204 lbo->sharing_count = 1; in lsdc_prime_import_sg_table()
213 const struct lsdc_desc *descp = ldev->descp; in lsdc_dumb_create()
221 if (!args->width || !args->height) in lsdc_dumb_create()
222 return -EINVAL; in lsdc_dumb_create()
224 if (args->bpp != 32 && args->bpp != 16) in lsdc_dumb_create()
225 return -EINVAL; in lsdc_dumb_create()
227 pitch = args->width * args->bpp / 8; in lsdc_dumb_create()
228 pitch = ALIGN(pitch, descp->pitch_align); in lsdc_dumb_create()
229 size = pitch * args->height; in lsdc_dumb_create()
232 /* Maximum single bo size allowed is the half vram size available */ in lsdc_dumb_create()
233 if (size > ldev->vram_size / 2) { in lsdc_dumb_create()
235 return -ENOMEM; in lsdc_dumb_create()
251 args->pitch = pitch; in lsdc_dumb_create()
252 args->size = size; in lsdc_dumb_create()
253 args->handle = handle; in lsdc_dumb_create()
265 return -ENOENT; in lsdc_dumb_map_offset()
267 *offset = drm_vma_node_offset_addr(&gobj->vma_node); in lsdc_dumb_map_offset()
278 mutex_init(&ldev->gem.mutex); in lsdc_gem_init()
279 INIT_LIST_HEAD(&ldev->gem.objects); in lsdc_gem_init()
284 struct drm_info_node *node = (struct drm_info_node *)m->private; in lsdc_show_buffer_object()
285 struct drm_device *ddev = node->minor->dev; in lsdc_show_buffer_object()
290 mutex_lock(&ldev->gem.mutex); in lsdc_show_buffer_object()
294 list_for_each_entry(lbo, &ldev->gem.objects, list) { in lsdc_show_buffer_object()
295 struct ttm_buffer_object *tbo = &lbo->tbo; in lsdc_show_buffer_object()
296 struct ttm_resource *resource = tbo->resource; in lsdc_show_buffer_object()
300 lsdc_mem_type_to_str(resource->mem_type), in lsdc_show_buffer_object()
305 mutex_unlock(&ldev->gem.mutex); in lsdc_show_buffer_object()
308 ldev->vram_pinned_size >> 10, ldev->gtt_pinned_size >> 10); in lsdc_show_buffer_object()