2019-05-29 07:17:56 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2014-08-22 18:36:26 +08:00
/*
* Copyright ( C ) Fuzhou Rockchip Electronics Co . Ltd
* Author : Mark Yao < mark . yao @ rock - chips . com >
*/
# ifndef _ROCKCHIP_DRM_GEM_H
# define _ROCKCHIP_DRM_GEM_H
# define to_rockchip_obj(x) container_of(x, struct rockchip_gem_object, base)
struct rockchip_gem_object {
struct drm_gem_object base ;
unsigned int flags ;
void * kvaddr ;
dma_addr_t dma_addr ;
2016-06-24 10:13:31 +08:00
/* Used when IOMMU is disabled */
2016-08-03 13:46:00 -07:00
unsigned long dma_attrs ;
2016-06-24 10:13:31 +08:00
/* Used when IOMMU is enabled */
struct drm_mm_node mm ;
unsigned long num_pages ;
struct page * * pages ;
struct sg_table * sgt ;
size_t size ;
2014-08-22 18:36:26 +08:00
} ;
struct sg_table * rockchip_gem_prime_get_sg_table ( struct drm_gem_object * obj ) ;
struct drm_gem_object *
2018-01-30 21:28:32 +01:00
rockchip_gem_prime_import_sg_table ( struct drm_device * dev ,
struct dma_buf_attachment * attach ,
struct sg_table * sg ) ;
2020-11-03 10:30:11 +01:00
int rockchip_gem_prime_vmap ( struct drm_gem_object * obj , struct dma_buf_map * map ) ;
void rockchip_gem_prime_vunmap ( struct drm_gem_object * obj , struct dma_buf_map * map ) ;
2014-08-22 18:36:26 +08:00
/* drm driver mmap file operations */
int rockchip_gem_mmap ( struct file * filp , struct vm_area_struct * vma ) ;
/* mmap a gem object to userspace. */
int rockchip_gem_mmap_buf ( struct drm_gem_object * obj ,
struct vm_area_struct * vma ) ;
struct rockchip_gem_object *
2015-01-12 14:58:23 +08:00
rockchip_gem_create_object ( struct drm_device * drm , unsigned int size ,
bool alloc_kmap ) ;
2014-08-22 18:36:26 +08:00
void rockchip_gem_free_object ( struct drm_gem_object * obj ) ;
int rockchip_gem_dumb_create ( struct drm_file * file_priv ,
struct drm_device * dev ,
struct drm_mode_create_dumb * args ) ;
# endif /* _ROCKCHIP_DRM_GEM_H */