drm/gem: Add drm_gem_dumb_map_offset()
Add a common drm_driver.dumb_map_offset function for GEM backed drivers. Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sean Paul <seanpaul@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/1500837417-40580-2-git-send-email-noralf@tronnes.org
This commit is contained in:
parent
4e6b1e9125
commit
db61152703
@ -310,6 +310,41 @@ drm_gem_handle_delete(struct drm_file *filp, u32 handle)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_handle_delete);
|
||||
|
||||
/**
|
||||
* drm_gem_dumb_map_offset - return the fake mmap offset for a gem object
|
||||
* @file: drm file-private structure containing the gem object
|
||||
* @dev: corresponding drm_device
|
||||
* @handle: gem object handle
|
||||
* @offset: return location for the fake mmap offset
|
||||
*
|
||||
* This implements the &drm_driver.dumb_map_offset kms driver callback for
|
||||
* drivers which use gem to manage their backing storage.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success or a negative error code on failure.
|
||||
*/
|
||||
int drm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
|
||||
u32 handle, u64 *offset)
|
||||
{
|
||||
struct drm_gem_object *obj;
|
||||
int ret;
|
||||
|
||||
obj = drm_gem_object_lookup(file, handle);
|
||||
if (!obj)
|
||||
return -ENOENT;
|
||||
|
||||
ret = drm_gem_create_mmap_offset(obj);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
*offset = drm_vma_node_offset_addr(&obj->vma_node);
|
||||
out:
|
||||
drm_gem_object_put_unlocked(obj);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(drm_gem_dumb_map_offset);
|
||||
|
||||
/**
|
||||
* drm_gem_dumb_destroy - dumb fb callback helper for gem based drivers
|
||||
* @file: drm file-private structure to remove the dumb handle from
|
||||
|
@ -302,6 +302,8 @@ void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages,
|
||||
bool dirty, bool accessed);
|
||||
|
||||
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
|
||||
int drm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
|
||||
u32 handle, u64 *offset);
|
||||
int drm_gem_dumb_destroy(struct drm_file *file,
|
||||
struct drm_device *dev,
|
||||
uint32_t handle);
|
||||
|
Loading…
Reference in New Issue
Block a user