XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
drm_gem_dma_helper.h File Reference
#include <drm/drm_file.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_gem.h>
Include dependency graph for drm_gem_dma_helper.h:

Go to the source code of this file.

Classes

struct  drm_gem_dma_object
 

Macros

#define to_drm_gem_dma_obj(gem_obj)    container_of(gem_obj, struct drm_gem_dma_object, base)
 
#define DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(dumb_create_func)
 
#define DRM_GEM_DMA_DRIVER_OPS    DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_gem_dma_dumb_create)
 
#define DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(dumb_create_func)
 
#define DRM_GEM_DMA_DRIVER_OPS_VMAP    DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_gem_dma_dumb_create)
 
#define DRM_GEM_DMA_UNMAPPED_AREA_FOPS    .get_unmapped_area = drm_gem_dma_get_unmapped_area,
 
: name for the generated structure

DEFINE_DRM_GEM_DMA_FOPS() - macro to generate file operations for DMA drivers

This macro autogenerates a suitable &struct file_operations for DMA based drivers, which can be assigned to &drm_driver.fops. Note that this structure cannot be shared between drivers, because it contains a reference to the current module using THIS_MODULE.

Note that the declaration is already marked as static - if you need a non-static version of this you're probably doing it wrong and will break the THIS_MODULE reference by accident.

#define DEFINE_DRM_GEM_DMA_FOPS(name)
 

Functions

struct drm_gem_dma_object * drm_gem_dma_create (struct drm_device *drm, size_t size)
 
void drm_gem_dma_free (struct drm_gem_dma_object *dma_obj)
 
void drm_gem_dma_print_info (const struct drm_gem_dma_object *dma_obj, struct drm_printer *p, unsigned int indent)
 
struct sg_table * drm_gem_dma_get_sg_table (struct drm_gem_dma_object *dma_obj)
 
int drm_gem_dma_vmap (struct drm_gem_dma_object *dma_obj, struct iosys_map *map)
 
int drm_gem_dma_mmap (struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma)
 
int drm_gem_dma_dumb_create_internal (struct drm_file *file_priv, struct drm_device *drm, struct drm_mode_create_dumb *args)
 
int drm_gem_dma_dumb_create (struct drm_file *file_priv, struct drm_device *drm, struct drm_mode_create_dumb *args)
 
struct drm_gem_object * drm_gem_dma_prime_import_sg_table (struct drm_device *dev, struct dma_buf_attachment *attach, struct sg_table *sgt)
 
struct drm_gem_object * drm_gem_dma_prime_import_sg_table_vmap (struct drm_device *drm, struct dma_buf_attachment *attach, struct sg_table *sgt)
 
unsigned long drm_gem_dma_get_unmapped_area (struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags)
 

Variables

const struct vm_operations_struct drm_gem_dma_vm_ops
 

Macro Definition Documentation

◆ DEFINE_DRM_GEM_DMA_FOPS

#define DEFINE_DRM_GEM_DMA_FOPS (   name)
Value:
static const struct file_operations name = {\
.owner = THIS_MODULE,\
.open = drm_open,\
.release = drm_release,\
.unlocked_ioctl = drm_ioctl,\
.compat_ioctl = drm_compat_ioctl,\
.poll = drm_poll,\
.read = drm_read,\
.llseek = noop_llseek,\
.mmap = drm_gem_mmap,\
.fop_flags = FOP_UNSIGNED_OFFSET, \
}
struct drm_crtc struct drm_plane struct drm_plane const struct drm_crtc_funcs const char * name
Definition drm_crtc.h:1242
ssize_t drm_read(struct file *filp, char __user *buffer, size_t count, loff_t *offset)
int drm_open(struct inode *inode, struct file *filp)
__poll_t drm_poll(struct file *filp, struct poll_table_struct *wait)
int drm_release(struct inode *inode, struct file *filp)
int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
#define DRM_GEM_DMA_UNMAPPED_AREA_FOPS
Definition drm_gem_dma_helper.h:240
long drm_ioctl(struct file *filp, unsigned int cmd, uintptr_t arg)
#define drm_compat_ioctl
Definition drm_ioctl.h:177
#define FOP_UNSIGNED_OFFSET
Definition mm.h:136
#define THIS_MODULE
Definition module.h:110
Definition fs.h:67

◆ DRM_GEM_DMA_DRIVER_OPS

DRM_GEM_DMA_DRIVER_OPS - DMA GEM driver operations

This macro provides a shortcut for setting the default GEM operations in the &drm_driver structure.

Drivers that come with their own implementation of &struct drm_driver.dumb_create should use DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE() instead. Use DRM_GEM_DMA_DRIVER_OPS if possible. Drivers that require a virtual address on imported buffers should use DRM_GEM_DMA_DRIVER_OPS_VMAP instead.

◆ DRM_GEM_DMA_DRIVER_OPS_VMAP

#define DRM_GEM_DMA_DRIVER_OPS_VMAP    DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_gem_dma_dumb_create)

DRM_GEM_DMA_DRIVER_OPS_VMAP - DMA GEM driver operations ensuring a virtual address on the buffer

This macro provides a shortcut for setting the default GEM operations in the &drm_driver structure for drivers that need the virtual address also on imported buffers.

Drivers that come with their own implementation of &struct drm_driver.dumb_create should use DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead. Use DRM_GEM_DMA_DRIVER_OPS_VMAP if possible. Drivers that do not require a virtual address on imported buffers should use DRM_GEM_DMA_DRIVER_OPS instead.

◆ DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE

#define DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE (   dumb_create_func)
Value:
.dumb_create = (dumb_create_func), \
.gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table_vmap
struct drm_gem_object * drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *drm, struct dma_buf_attachment *attach, struct sg_table *sgt)

DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE - DMA GEM driver operations ensuring a virtual address on the buffer @dumb_create_func: callback function for .dumb_create

This macro provides a shortcut for setting the default GEM operations in the &drm_driver structure for drivers that need the virtual address also on imported buffers.

This macro is a variant of DRM_GEM_DMA_DRIVER_OPS_VMAP for drivers that override the default implementation of &struct drm_driver.dumb_create. Use DRM_GEM_DMA_DRIVER_OPS_VMAP if possible. Drivers that do not require a virtual address on imported buffers should use DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE() instead.

◆ DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE

#define DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE (   dumb_create_func)
Value:
.dumb_create = (dumb_create_func), \
.gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table
struct drm_gem_object * drm_gem_dma_prime_import_sg_table(struct drm_device *dev, struct dma_buf_attachment *attach, struct sg_table *sgt)

DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE - DMA GEM driver operations @dumb_create_func: callback function for .dumb_create

This macro provides a shortcut for setting the default GEM operations in the &drm_driver structure.

This macro is a variant of DRM_GEM_DMA_DRIVER_OPS for drivers that override the default implementation of &struct rm_driver.dumb_create. Use DRM_GEM_DMA_DRIVER_OPS if possible. Drivers that require a virtual address on imported buffers should use DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead.

◆ DRM_GEM_DMA_UNMAPPED_AREA_FOPS

#define DRM_GEM_DMA_UNMAPPED_AREA_FOPS    .get_unmapped_area = drm_gem_dma_get_unmapped_area,

◆ to_drm_gem_dma_obj

#define to_drm_gem_dma_obj (   gem_obj)     container_of(gem_obj, struct drm_gem_dma_object, base)

Function Documentation

◆ drm_gem_dma_create()

struct drm_gem_dma_object * drm_gem_dma_create ( struct drm_device *  drm,
size_t  size 
)

◆ drm_gem_dma_dumb_create()

int drm_gem_dma_dumb_create ( struct drm_file *  file_priv,
struct drm_device *  drm,
struct drm_mode_create_dumb *  args 
)

◆ drm_gem_dma_dumb_create_internal()

int drm_gem_dma_dumb_create_internal ( struct drm_file *  file_priv,
struct drm_device *  drm,
struct drm_mode_create_dumb *  args 
)

◆ drm_gem_dma_free()

void drm_gem_dma_free ( struct drm_gem_dma_object *  dma_obj)

◆ drm_gem_dma_get_sg_table()

struct sg_table * drm_gem_dma_get_sg_table ( struct drm_gem_dma_object *  dma_obj)

◆ drm_gem_dma_get_unmapped_area()

unsigned long drm_gem_dma_get_unmapped_area ( struct file *  filp,
unsigned long  addr,
unsigned long  len,
unsigned long  pgoff,
unsigned long  flags 
)

◆ drm_gem_dma_mmap()

int drm_gem_dma_mmap ( struct drm_gem_dma_object *  dma_obj,
struct vm_area_struct *  vma 
)

◆ drm_gem_dma_prime_import_sg_table()

struct drm_gem_object * drm_gem_dma_prime_import_sg_table ( struct drm_device *  dev,
struct dma_buf_attachment *  attach,
struct sg_table *  sgt 
)

◆ drm_gem_dma_prime_import_sg_table_vmap()

struct drm_gem_object * drm_gem_dma_prime_import_sg_table_vmap ( struct drm_device *  drm,
struct dma_buf_attachment *  attach,
struct sg_table *  sgt 
)

◆ drm_gem_dma_print_info()

void drm_gem_dma_print_info ( const struct drm_gem_dma_object *  dma_obj,
struct drm_printer *  p,
unsigned int  indent 
)

◆ drm_gem_dma_vmap()

int drm_gem_dma_vmap ( struct drm_gem_dma_object *  dma_obj,
struct iosys_map *  map 
)

Variable Documentation

◆ drm_gem_dma_vm_ops

const struct vm_operations_struct drm_gem_dma_vm_ops
extern