Lines Matching +full:single +full:- +full:tt

1 // SPDX-License-Identifier: GPL-2.0+
6 #include <linux/dma-buf.h>
22 dma_resv_assert_held(obj->resv); in lsdc_gem_prime_pin()
26 lbo->sharing_count++; in lsdc_gem_prime_pin()
35 dma_resv_assert_held(obj->resv); in lsdc_gem_prime_unpin()
38 if (lbo->sharing_count) in lsdc_gem_prime_unpin()
39 lbo->sharing_count--; in lsdc_gem_prime_unpin()
45 struct ttm_tt *tt = tbo->ttm; in lsdc_gem_prime_get_sg_table() local
47 if (!tt) { in lsdc_gem_prime_get_sg_table()
48 drm_err(obj->dev, "sharing a buffer without backing memory\n"); in lsdc_gem_prime_get_sg_table()
49 return ERR_PTR(-ENOMEM); in lsdc_gem_prime_get_sg_table()
52 return drm_prime_pages_to_sg(obj->dev, tt->pages, tt->num_pages); in lsdc_gem_prime_get_sg_table()
69 if (lbo->vmap_count > 0) { in lsdc_gem_object_vmap()
70 ++lbo->vmap_count; in lsdc_gem_object_vmap()
76 drm_err(obj->dev, "pin %p for vmap failed\n", lbo); in lsdc_gem_object_vmap()
80 ret = ttm_bo_vmap(tbo, &lbo->map); in lsdc_gem_object_vmap()
82 drm_err(obj->dev, "ttm bo vmap failed\n"); in lsdc_gem_object_vmap()
87 lbo->vmap_count = 1; in lsdc_gem_object_vmap()
90 *map = lbo->map; in lsdc_gem_object_vmap()
100 if (unlikely(!lbo->vmap_count)) { in lsdc_gem_object_vunmap()
101 drm_warn(obj->dev, "%p is not mapped\n", lbo); in lsdc_gem_object_vunmap()
105 --lbo->vmap_count; in lsdc_gem_object_vunmap()
106 if (lbo->vmap_count == 0) { in lsdc_gem_object_vunmap()
107 ttm_bo_vunmap(tbo, &lbo->map); in lsdc_gem_object_vunmap()
120 drm_warn(obj->dev, "mmap %p failed\n", tbo); in lsdc_gem_object_mmap()
163 gobj = &lbo->tbo.base; in lsdc_gem_object_create()
164 gobj->funcs = &lsdc_gem_object_funcs; in lsdc_gem_object_create()
167 mutex_lock(&ldev->gem.mutex); in lsdc_gem_object_create()
168 list_add_tail(&lbo->list, &ldev->gem.objects); in lsdc_gem_object_create()
169 mutex_unlock(&ldev->gem.mutex); in lsdc_gem_object_create()
179 struct dma_resv *resv = attach->dmabuf->resv; in lsdc_prime_import_sg_table()
180 u64 size = attach->dmabuf->size; in lsdc_prime_import_sg_table()
195 lbo->sharing_count = 1; in lsdc_prime_import_sg_table()
204 const struct lsdc_desc *descp = ldev->descp; in lsdc_dumb_create()
212 if (!args->width || !args->height) in lsdc_dumb_create()
213 return -EINVAL; in lsdc_dumb_create()
215 if (args->bpp != 32 && args->bpp != 16) in lsdc_dumb_create()
216 return -EINVAL; in lsdc_dumb_create()
218 pitch = args->width * args->bpp / 8; in lsdc_dumb_create()
219 pitch = ALIGN(pitch, descp->pitch_align); in lsdc_dumb_create()
220 size = pitch * args->height; in lsdc_dumb_create()
223 /* Maximum single bo size allowed is the half vram size available */ in lsdc_dumb_create()
224 if (size > ldev->vram_size / 2) { in lsdc_dumb_create()
226 return -ENOMEM; in lsdc_dumb_create()
242 args->pitch = pitch; in lsdc_dumb_create()
243 args->size = size; in lsdc_dumb_create()
244 args->handle = handle; in lsdc_dumb_create()
256 return -ENOENT; in lsdc_dumb_map_offset()
258 *offset = drm_vma_node_offset_addr(&gobj->vma_node); in lsdc_dumb_map_offset()
269 mutex_init(&ldev->gem.mutex); in lsdc_gem_init()
270 INIT_LIST_HEAD(&ldev->gem.objects); in lsdc_gem_init()
275 struct drm_info_node *node = (struct drm_info_node *)m->private; in lsdc_show_buffer_object()
276 struct drm_device *ddev = node->minor->dev; in lsdc_show_buffer_object()
281 mutex_lock(&ldev->gem.mutex); in lsdc_show_buffer_object()
285 list_for_each_entry(lbo, &ldev->gem.objects, list) { in lsdc_show_buffer_object()
286 struct ttm_buffer_object *tbo = &lbo->tbo; in lsdc_show_buffer_object()
287 struct ttm_resource *resource = tbo->resource; in lsdc_show_buffer_object()
291 lsdc_mem_type_to_str(resource->mem_type), in lsdc_show_buffer_object()
296 mutex_unlock(&ldev->gem.mutex); in lsdc_show_buffer_object()
299 ldev->vram_pinned_size >> 10, ldev->gtt_pinned_size >> 10); in lsdc_show_buffer_object()