drm/cma-helper: Export dedicated wrappers for GEM object functions
Wrap GEM CMA functions for struct drm_gem_object_funcs and update all callers. This will allow for an update of the public interfaces of the GEM CMA helper library. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Maxime Ripard <maxime@cerno.tech> Link: https://patchwork.freedesktop.org/patch/msgid/20211115120148.21766-3-tzimmermann@suse.de
This commit is contained in:
parent
d0c4e34db0
commit
05b1de51df
@ -35,11 +35,11 @@
|
||||
*/
|
||||
|
||||
static const struct drm_gem_object_funcs drm_gem_cma_default_funcs = {
|
||||
.free = drm_gem_cma_free_object,
|
||||
.print_info = drm_gem_cma_print_info,
|
||||
.get_sg_table = drm_gem_cma_get_sg_table,
|
||||
.vmap = drm_gem_cma_vmap,
|
||||
.mmap = drm_gem_cma_mmap,
|
||||
.free = drm_gem_cma_object_free,
|
||||
.print_info = drm_gem_cma_object_print_info,
|
||||
.get_sg_table = drm_gem_cma_object_get_sg_table,
|
||||
.vmap = drm_gem_cma_object_vmap,
|
||||
.mmap = drm_gem_cma_object_mmap,
|
||||
.vm_ops = &drm_gem_cma_vm_ops,
|
||||
};
|
||||
|
||||
@ -198,8 +198,6 @@ drm_gem_cma_create_with_handle(struct drm_file *file_priv,
|
||||
* This function frees the backing memory of the CMA GEM object, cleans up the
|
||||
* GEM object state and frees the memory used to store the object itself.
|
||||
* If the buffer is imported and the virtual address is set, it is released.
|
||||
* Drivers using the CMA helpers should set this as their
|
||||
* &drm_gem_object_funcs.free callback.
|
||||
*/
|
||||
void drm_gem_cma_free_object(struct drm_gem_object *gem_obj)
|
||||
{
|
||||
@ -388,9 +386,8 @@ EXPORT_SYMBOL(drm_gem_cma_print_info);
|
||||
* pages for a CMA GEM object
|
||||
* @obj: GEM object
|
||||
*
|
||||
* This function exports a scatter/gather table by
|
||||
* calling the standard DMA mapping API. Drivers using the CMA helpers should
|
||||
* set this as their &drm_gem_object_funcs.get_sg_table callback.
|
||||
* This function exports a scatter/gather table by calling the standard
|
||||
* DMA mapping API.
|
||||
*
|
||||
* Returns:
|
||||
* A pointer to the scatter/gather table of pinned pages or NULL on failure.
|
||||
@ -470,8 +467,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_import_sg_table);
|
||||
* This function maps a buffer into the kernel's
|
||||
* virtual address space. Since the CMA buffers are already mapped into the
|
||||
* kernel virtual address space this simply returns the cached virtual
|
||||
* address. Drivers using the CMA helpers should set this as their DRM
|
||||
* driver's &drm_gem_object_funcs.vmap callback.
|
||||
* address.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success, or a negative error code otherwise.
|
||||
@ -493,8 +489,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_vmap);
|
||||
*
|
||||
* This function maps a buffer into a userspace process's address space.
|
||||
* In addition to the usual GEM VMA setup it immediately faults in the entire
|
||||
* object instead of using on-demand faulting. Drivers that use the CMA
|
||||
* helpers should set this as their &drm_gem_object_funcs.mmap callback.
|
||||
* object instead of using on-demand faulting.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success or a negative error code on failure.
|
||||
|
@ -327,11 +327,11 @@ const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc)
|
||||
*/
|
||||
|
||||
static const struct drm_gem_object_funcs rcar_du_gem_funcs = {
|
||||
.free = drm_gem_cma_free_object,
|
||||
.print_info = drm_gem_cma_print_info,
|
||||
.get_sg_table = drm_gem_cma_get_sg_table,
|
||||
.vmap = drm_gem_cma_vmap,
|
||||
.mmap = drm_gem_cma_mmap,
|
||||
.free = drm_gem_cma_object_free,
|
||||
.print_info = drm_gem_cma_object_print_info,
|
||||
.get_sg_table = drm_gem_cma_object_get_sg_table,
|
||||
.vmap = drm_gem_cma_object_vmap,
|
||||
.mmap = drm_gem_cma_object_mmap,
|
||||
.vm_ops = &drm_gem_cma_vm_ops,
|
||||
};
|
||||
|
||||
|
@ -732,8 +732,8 @@ static const struct vm_operations_struct vc4_vm_ops = {
|
||||
static const struct drm_gem_object_funcs vc4_gem_object_funcs = {
|
||||
.free = vc4_free_object,
|
||||
.export = vc4_prime_export,
|
||||
.get_sg_table = drm_gem_cma_get_sg_table,
|
||||
.vmap = drm_gem_cma_vmap,
|
||||
.get_sg_table = drm_gem_cma_object_get_sg_table,
|
||||
.vmap = drm_gem_cma_object_vmap,
|
||||
.mmap = vc4_gem_object_mmap,
|
||||
.vm_ops = &vc4_vm_ops,
|
||||
};
|
||||
|
@ -48,6 +48,84 @@ struct sg_table *drm_gem_cma_get_sg_table(struct drm_gem_object *obj);
|
||||
int drm_gem_cma_vmap(struct drm_gem_object *obj, struct dma_buf_map *map);
|
||||
int drm_gem_cma_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
|
||||
|
||||
/*
|
||||
* GEM object functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* drm_gem_cma_object_free - GEM object function for drm_gem_cma_free_object()
|
||||
* @obj: GEM object to free
|
||||
*
|
||||
* This function wraps drm_gem_cma_free_object(). Drivers that employ the CMA helpers
|
||||
* should use it as their &drm_gem_object_funcs.free handler.
|
||||
*/
|
||||
static inline void drm_gem_cma_object_free(struct drm_gem_object *obj)
|
||||
{
|
||||
drm_gem_cma_free_object(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_gem_cma_object_print_info() - Print &drm_gem_cma_object info for debugfs
|
||||
* @p: DRM printer
|
||||
* @indent: Tab indentation level
|
||||
* @obj: GEM object
|
||||
*
|
||||
* This function wraps drm_gem_cma_print_info(). Drivers that employ the CMA helpers
|
||||
* should use this function as their &drm_gem_object_funcs.print_info handler.
|
||||
*/
|
||||
static inline void drm_gem_cma_object_print_info(struct drm_printer *p, unsigned int indent,
|
||||
const struct drm_gem_object *obj)
|
||||
{
|
||||
drm_gem_cma_print_info(p, indent, obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_gem_cma_object_get_sg_table - GEM object function for drm_gem_cma_get_sg_table()
|
||||
* @obj: GEM object
|
||||
*
|
||||
* This function wraps drm_gem_cma_get_sg_table(). Drivers that employ the CMA helpers should
|
||||
* use it as their &drm_gem_object_funcs.get_sg_table handler.
|
||||
*
|
||||
* Returns:
|
||||
* A pointer to the scatter/gather table of pinned pages or NULL on failure.
|
||||
*/
|
||||
static inline struct sg_table *drm_gem_cma_object_get_sg_table(struct drm_gem_object *obj)
|
||||
{
|
||||
return drm_gem_cma_get_sg_table(obj);
|
||||
}
|
||||
|
||||
/*
|
||||
* drm_gem_cma_object_vmap - GEM object function for drm_gem_cma_vmap()
|
||||
* @obj: GEM object
|
||||
* @map: Returns the kernel virtual address of the CMA GEM object's backing store.
|
||||
*
|
||||
* This function wraps drm_gem_cma_vmap(). Drivers that employ the CMA helpers should
|
||||
* use it as their &drm_gem_object_funcs.vmap handler.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success or a negative error code on failure.
|
||||
*/
|
||||
static inline int drm_gem_cma_object_vmap(struct drm_gem_object *obj, struct dma_buf_map *map)
|
||||
{
|
||||
return drm_gem_cma_vmap(obj, map);
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_gem_cma_object_mmap - GEM object function for drm_gem_cma_mmap()
|
||||
* @obj: GEM object
|
||||
* @vma: VMA for the area to be mapped
|
||||
*
|
||||
* This function wraps drm_gem_cma_mmap(). Drivers that employ the cma helpers should
|
||||
* use it as their &drm_gem_object_funcs.mmap handler.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success or a negative error code on failure.
|
||||
*/
|
||||
static inline int drm_gem_cma_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
|
||||
{
|
||||
return drm_gem_cma_mmap(obj, vma);
|
||||
}
|
||||
|
||||
/*
|
||||
* Driver ops
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user