root/drivers/gpu/drm/omapdrm/omap_gem.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * omap_gem.h -- OMAP DRM GEM Object Management
   4  *
   5  * Copyright (C) 2011 Texas Instruments
   6  * Author: Rob Clark <rob@ti.com>
   7  */
   8 
   9 #ifndef __OMAPDRM_GEM_H__
  10 #define __OMAPDRM_GEM_H__
  11 
  12 #include <linux/types.h>
  13 #include <linux/mm_types.h>
  14 
  15 enum dma_data_direction;
  16 
  17 struct dma_buf;
  18 struct drm_device;
  19 struct drm_file;
  20 struct drm_gem_object;
  21 struct drm_mode_create_dumb;
  22 struct file;
  23 struct list_head;
  24 struct page;
  25 struct seq_file;
  26 struct vm_area_struct;
  27 struct vm_fault;
  28 
  29 union omap_gem_size;
  30 
  31 /* Initialization and Cleanup */
  32 void omap_gem_init(struct drm_device *dev);
  33 void omap_gem_deinit(struct drm_device *dev);
  34 
  35 #ifdef CONFIG_PM
  36 int omap_gem_resume(struct drm_device *dev);
  37 #endif
  38 
  39 #ifdef CONFIG_DEBUG_FS
  40 void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m);
  41 void omap_gem_describe_objects(struct list_head *list, struct seq_file *m);
  42 #endif
  43 
  44 /* GEM Object Creation and Deletion */
  45 struct drm_gem_object *omap_gem_new(struct drm_device *dev,
  46                 union omap_gem_size gsize, u32 flags);
  47 struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size,
  48                 struct sg_table *sgt);
  49 int omap_gem_new_handle(struct drm_device *dev, struct drm_file *file,
  50                 union omap_gem_size gsize, u32 flags, u32 *handle);
  51 void omap_gem_free_object(struct drm_gem_object *obj);
  52 void *omap_gem_vaddr(struct drm_gem_object *obj);
  53 
  54 /* Dumb Buffers Interface */
  55 int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
  56                 u32 handle, u64 *offset);
  57 int omap_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
  58                 struct drm_mode_create_dumb *args);
  59 
  60 /* mmap() Interface */
  61 int omap_gem_mmap(struct file *filp, struct vm_area_struct *vma);
  62 int omap_gem_mmap_obj(struct drm_gem_object *obj,
  63                 struct vm_area_struct *vma);
  64 u64 omap_gem_mmap_offset(struct drm_gem_object *obj);
  65 size_t omap_gem_mmap_size(struct drm_gem_object *obj);
  66 
  67 /* PRIME Interface */
  68 struct dma_buf *omap_gem_prime_export(struct drm_gem_object *obj, int flags);
  69 struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
  70                 struct dma_buf *buffer);
  71 
  72 vm_fault_t omap_gem_fault(struct vm_fault *vmf);
  73 int omap_gem_roll(struct drm_gem_object *obj, u32 roll);
  74 void omap_gem_cpu_sync_page(struct drm_gem_object *obj, int pgoff);
  75 void omap_gem_dma_sync_buffer(struct drm_gem_object *obj,
  76                 enum dma_data_direction dir);
  77 int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr);
  78 void omap_gem_unpin(struct drm_gem_object *obj);
  79 int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages,
  80                 bool remap);
  81 int omap_gem_put_pages(struct drm_gem_object *obj);
  82 
  83 u32 omap_gem_flags(struct drm_gem_object *obj);
  84 int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, u32 orient,
  85                 int x, int y, dma_addr_t *dma_addr);
  86 int omap_gem_tiled_stride(struct drm_gem_object *obj, u32 orient);
  87 
  88 #endif /* __OMAPDRM_GEM_H__ */

/* [<][>][^][v][top][bottom][index][help] */