|
@@ -270,42 +270,6 @@ int armada_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-int armada_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
|
|
|
|
- uint32_t handle, uint64_t *offset)
|
|
|
|
-{
|
|
|
|
- struct armada_gem_object *obj;
|
|
|
|
- int ret = 0;
|
|
|
|
-
|
|
|
|
- obj = armada_gem_object_lookup(file, handle);
|
|
|
|
- if (!obj) {
|
|
|
|
- DRM_ERROR("failed to lookup gem object\n");
|
|
|
|
- return -EINVAL;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* Don't allow imported objects to be mapped */
|
|
|
|
- if (obj->obj.import_attach) {
|
|
|
|
- ret = -EINVAL;
|
|
|
|
- goto err_unref;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ret = drm_gem_create_mmap_offset(&obj->obj);
|
|
|
|
- if (ret == 0) {
|
|
|
|
- *offset = drm_vma_node_offset_addr(&obj->obj.vma_node);
|
|
|
|
- DRM_DEBUG_DRIVER("handle %#x offset %llx\n", handle, *offset);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- err_unref:
|
|
|
|
- drm_gem_object_unreference_unlocked(&obj->obj);
|
|
|
|
-
|
|
|
|
- return ret;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int armada_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev,
|
|
|
|
- uint32_t handle)
|
|
|
|
-{
|
|
|
|
- return drm_gem_handle_delete(file, handle);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/* Private driver gem ioctls */
|
|
/* Private driver gem ioctls */
|
|
int armada_gem_create_ioctl(struct drm_device *dev, void *data,
|
|
int armada_gem_create_ioctl(struct drm_device *dev, void *data,
|
|
struct drm_file *file)
|
|
struct drm_file *file)
|