drm_gem_cma_helper.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef __DRM_GEM_CMA_HELPER_H__
  2. #define __DRM_GEM_CMA_HELPER_H__
  3. #include <drm/drmP.h>
  4. #include <drm/drm_gem.h>
  5. struct drm_gem_cma_object {
  6. struct drm_gem_object base;
  7. dma_addr_t paddr;
  8. struct sg_table *sgt;
  9. /* For objects with DMA memory allocated by GEM CMA */
  10. void *vaddr;
  11. };
  12. static inline struct drm_gem_cma_object *
  13. to_drm_gem_cma_obj(struct drm_gem_object *gem_obj)
  14. {
  15. return container_of(gem_obj, struct drm_gem_cma_object, base);
  16. }
  17. /* free gem object. */
  18. void drm_gem_cma_free_object(struct drm_gem_object *gem_obj);
  19. /* create memory region for drm framebuffer. */
  20. int drm_gem_cma_dumb_create(struct drm_file *file_priv,
  21. struct drm_device *drm, struct drm_mode_create_dumb *args);
  22. /* map memory region for drm framebuffer to user space. */
  23. int drm_gem_cma_dumb_map_offset(struct drm_file *file_priv,
  24. struct drm_device *drm, uint32_t handle, uint64_t *offset);
  25. /* set vm_flags and we can change the vm attribute to other one at here. */
  26. int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma);
  27. /* allocate physical memory. */
  28. struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm,
  29. unsigned int size);
  30. extern const struct vm_operations_struct drm_gem_cma_vm_ops;
  31. #ifdef CONFIG_DEBUG_FS
  32. void drm_gem_cma_describe(struct drm_gem_cma_object *obj, struct seq_file *m);
  33. #endif
  34. struct sg_table *drm_gem_cma_prime_get_sg_table(struct drm_gem_object *obj);
  35. struct drm_gem_object *
  36. drm_gem_cma_prime_import_sg_table(struct drm_device *dev,
  37. struct dma_buf_attachment *attach,
  38. struct sg_table *sgt);
  39. int drm_gem_cma_prime_mmap(struct drm_gem_object *obj,
  40. struct vm_area_struct *vma);
  41. void *drm_gem_cma_prime_vmap(struct drm_gem_object *obj);
  42. void drm_gem_cma_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
  43. #endif /* __DRM_GEM_CMA_HELPER_H__ */