drm/rockchip: gem: add begin/end cpu access

Change-Id: Ie2c54addcf037cf501edcad76470e5e46c667b7e
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
This commit is contained in:
Mark Yao
2017-07-13 14:57:02 +08:00
committed by Huang, Tao
parent c6036ecd26
commit 85cc5b07aa
3 changed files with 39 additions and 0 deletions

View File

@@ -1273,6 +1273,8 @@ static struct drm_driver rockchip_drm_driver = {
.gem_prime_vmap = rockchip_gem_prime_vmap,
.gem_prime_vunmap = rockchip_gem_prime_vunmap,
.gem_prime_mmap = rockchip_gem_mmap_buf,
.gem_prime_begin_cpu_access = rockchip_gem_prime_begin_cpu_access,
.gem_prime_end_cpu_access = rockchip_gem_prime_end_cpu_access,
#ifdef CONFIG_DEBUG_FS
.debugfs_init = rockchip_drm_debugfs_init,
.debugfs_cleanup = rockchip_drm_debugfs_cleanup,

View File

@@ -983,3 +983,32 @@ void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
/* Nothing to do if allocated by DMA mapping API. */
}
int rockchip_gem_prime_begin_cpu_access(struct drm_gem_object *obj,
size_t start, size_t len,
enum dma_data_direction dir)
{
struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
struct drm_device *drm = obj->dev;
if (!rk_obj->sgt)
return 0;
dma_sync_sg_for_cpu(drm->dev, rk_obj->sgt->sgl,
rk_obj->sgt->nents, dir);
return 0;
}
void rockchip_gem_prime_end_cpu_access(struct drm_gem_object *obj,
size_t start, size_t len,
enum dma_data_direction dir)
{
struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
struct drm_device *drm = obj->dev;
if (!rk_obj->sgt)
return;
dma_sync_sg_for_device(drm->dev, rk_obj->sgt->sgl,
rk_obj->sgt->nents, dir);
}

View File

@@ -101,4 +101,12 @@ int rockchip_gem_cpu_acquire_ioctl(struct drm_device *dev, void* data,
int rockchip_gem_cpu_release_ioctl(struct drm_device *dev, void* data,
struct drm_file *file_priv);
int rockchip_gem_prime_begin_cpu_access(struct drm_gem_object *obj,
size_t start, size_t len,
enum dma_data_direction dir);
void rockchip_gem_prime_end_cpu_access(struct drm_gem_object *obj,
size_t start, size_t len,
enum dma_data_direction dir);
#endif /* _ROCKCHIP_DRM_GEM_H */