Lines Matching defs:obj

115 	struct drm_gem_object *obj;	/* the current pinned obj */
116 pgoff_t obj_pgoff; /* page offset of obj currently
134 u64 omap_gem_mmap_offset(struct drm_gem_object *obj)
136 struct drm_device *dev = obj->dev;
141 size = omap_gem_mmap_size(obj);
142 ret = drm_gem_create_mmap_offset_size(obj, size);
148 return drm_vma_node_offset_addr(&obj->vma_node);
166 static void omap_gem_evict_entry(struct drm_gem_object *obj,
169 struct omap_gem_object *omap_obj = to_omap_bo(obj);
170 struct omap_drm_private *priv = obj->dev->dev_private;
173 loff_t off = omap_gem_mmap_offset(obj) +
181 unmap_mapping_range(obj->dev->anon_inode->i_mapping,
186 unmap_mapping_range(obj->dev->anon_inode->i_mapping,
190 entry->obj = NULL;
194 static void omap_gem_evict(struct drm_gem_object *obj)
196 struct omap_gem_object *omap_obj = to_omap_bo(obj);
197 struct omap_drm_private *priv = obj->dev->dev_private;
207 if (entry->obj == obj)
208 omap_gem_evict_entry(obj, fmt, entry);
221 static int omap_gem_attach_pages(struct drm_gem_object *obj)
223 struct drm_device *dev = obj->dev;
224 struct omap_gem_object *omap_obj = to_omap_bo(obj);
226 int npages = obj->size >> PAGE_SHIFT;
239 pages = drm_gem_get_pages(obj);
241 dev_err(obj->dev->dev, "could not get pages: %ld\n", PTR_ERR(pages));
288 drm_gem_put_pages(obj, pages, true, false);
294 static void omap_gem_detach_pages(struct drm_gem_object *obj)
296 struct omap_gem_object *omap_obj = to_omap_bo(obj);
297 unsigned int npages = obj->size >> PAGE_SHIFT;
304 dma_unmap_page(obj->dev->dev, omap_obj->dma_addrs[i],
311 drm_gem_put_pages(obj, omap_obj->pages, true, false);
316 u32 omap_gem_flags(struct drm_gem_object *obj)
318 return to_omap_bo(obj)->flags;
322 size_t omap_gem_mmap_size(struct drm_gem_object *obj)
324 struct omap_gem_object *omap_obj = to_omap_bo(obj);
325 size_t size = obj->size;
346 static vm_fault_t omap_gem_fault_1d(struct drm_gem_object *obj,
349 struct omap_gem_object *omap_obj = to_omap_bo(obj);
357 omap_gem_cpu_sync_page(obj, pgoff);
372 static vm_fault_t omap_gem_fault_2d(struct drm_gem_object *obj,
375 struct omap_gem_object *omap_obj = to_omap_bo(obj);
376 struct omap_drm_private *priv = obj->dev->dev_private;
419 if (entry->obj)
420 omap_gem_evict_entry(entry->obj, fmt, entry);
422 entry->obj = obj;
453 dev_err(obj->dev->dev, "failed to pin: %d\n", err);
493 struct drm_gem_object *obj = vma->vm_private_data;
494 struct omap_gem_object *omap_obj = to_omap_bo(obj);
504 err = omap_gem_attach_pages(obj);
517 ret = omap_gem_fault_2d(obj, vma, vmf);
519 ret = omap_gem_fault_1d(obj, vma, vmf);
541 int omap_gem_mmap_obj(struct drm_gem_object *obj,
544 struct omap_gem_object *omap_obj = to_omap_bo(obj);
559 if (WARN_ON(!obj->filp))
569 vma->vm_file = get_file(obj->filp);
620 struct drm_gem_object *obj;
624 obj = drm_gem_object_lookup(file, handle);
625 if (obj == NULL) {
630 *offset = omap_gem_mmap_offset(obj);
632 drm_gem_object_put(obj);
644 int omap_gem_roll(struct drm_gem_object *obj, u32 roll)
646 struct omap_gem_object *omap_obj = to_omap_bo(obj);
647 u32 npages = obj->size >> PAGE_SHIFT;
651 dev_err(obj->dev->dev, "invalid roll: %d\n", roll);
661 ret = omap_gem_attach_pages(obj);
668 dev_err(obj->dev->dev, "could not repin: %d\n", ret);
691 static inline bool omap_gem_is_cached_coherent(struct drm_gem_object *obj)
693 struct omap_gem_object *omap_obj = to_omap_bo(obj);
702 void omap_gem_cpu_sync_page(struct drm_gem_object *obj, int pgoff)
704 struct drm_device *dev = obj->dev;
705 struct omap_gem_object *omap_obj = to_omap_bo(obj);
707 if (omap_gem_is_cached_coherent(obj))
718 void omap_gem_dma_sync_buffer(struct drm_gem_object *obj,
721 struct drm_device *dev = obj->dev;
722 struct omap_gem_object *omap_obj = to_omap_bo(obj);
723 int i, npages = obj->size >> PAGE_SHIFT;
727 if (omap_gem_is_cached_coherent(obj))
748 unmap_mapping_range(obj->filp->f_mapping, 0,
749 omap_gem_mmap_size(obj), 1);
755 * @obj: the GEM object
767 int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr)
769 struct omap_drm_private *priv = obj->dev->dev_private;
770 struct omap_gem_object *omap_obj = to_omap_bo(obj);
777 u32 npages = obj->size >> PAGE_SHIFT;
785 ret = omap_gem_attach_pages(obj);
794 block = tiler_reserve_1d(obj->size);
799 dev_err(obj->dev->dev,
809 dev_err(obj->dev->dev,
840 * @obj: the GEM object
844 static void omap_gem_unpin_locked(struct drm_gem_object *obj)
846 struct omap_drm_private *priv = obj->dev->dev_private;
847 struct omap_gem_object *omap_obj = to_omap_bo(obj);
856 dev_err(obj->dev->dev,
861 dev_err(obj->dev->dev,
871 * @obj: the GEM object
877 void omap_gem_unpin(struct drm_gem_object *obj)
879 struct omap_gem_object *omap_obj = to_omap_bo(obj);
882 omap_gem_unpin_locked(obj);
890 int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, u32 orient,
893 struct omap_gem_object *omap_obj = to_omap_bo(obj);
910 int omap_gem_tiled_stride(struct drm_gem_object *obj, u32 orient)
912 struct omap_gem_object *omap_obj = to_omap_bo(obj);
929 int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages,
932 struct omap_gem_object *omap_obj = to_omap_bo(obj);
938 ret = omap_gem_attach_pages(obj);
957 int omap_gem_put_pages(struct drm_gem_object *obj)
971 void *omap_gem_vaddr(struct drm_gem_object *obj)
973 struct omap_gem_object *omap_obj = to_omap_bo(obj);
980 ret = omap_gem_attach_pages(obj);
986 omap_obj->vaddr = vmap(omap_obj->pages, obj->size >> PAGE_SHIFT,
1013 struct drm_gem_object *obj = &omap_obj->base;
1014 u32 npages = obj->size >> PAGE_SHIFT;
1038 void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
1040 struct omap_gem_object *omap_obj = to_omap_bo(obj);
1043 off = drm_vma_node_start(&obj->vma_node);
1048 omap_obj->flags, obj->name, kref_read(&obj->refcount),
1062 seq_printf(m, " %zu", obj->size);
1077 struct drm_gem_object *obj = &omap_obj->base;
1079 omap_gem_describe(obj, m);
1081 size += obj->size;
1092 void omap_gem_free_object(struct drm_gem_object *obj)
1094 struct drm_device *dev = obj->dev;
1096 struct omap_gem_object *omap_obj = to_omap_bo(obj);
1098 omap_gem_evict(obj);
1119 omap_gem_detach_pages(obj);
1123 dma_free_wc(dev->dev, obj->size, omap_obj->vaddr,
1127 } else if (obj->import_attach) {
1128 drm_prime_gem_destroy(obj, omap_obj->sgt);
1133 drm_gem_object_release(obj);
1178 struct drm_gem_object *obj;
1218 obj = &omap_obj->base;
1241 drm_gem_private_object_init(dev, obj, size);
1243 ret = drm_gem_object_init(dev, obj, size);
1247 mapping = obj->filp->f_mapping;
1264 return obj;
1267 drm_gem_object_release(obj);
1278 struct drm_gem_object *obj;
1286 obj = omap_gem_new(dev, gsize, OMAP_BO_MEM_DMABUF | OMAP_BO_WC);
1287 if (!obj)
1290 omap_obj = to_omap_bo(obj);
1307 omap_gem_free_object(obj);
1308 obj = ERR_PTR(-ENOMEM);
1316 omap_gem_free_object(obj);
1317 obj = ERR_PTR(-ENOMEM);
1324 return obj;
1331 struct drm_gem_object *obj;
1334 obj = omap_gem_new(dev, gsize, flags);
1335 if (!obj)
1338 ret = drm_gem_handle_create(file, obj, handle);
1340 omap_gem_free_object(obj);
1345 drm_gem_object_put(obj);