mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
drm/rockchip: gem: add begin/end cpu access
Change-Id: Ie2c54addcf037cf501edcad76470e5e46c667b7e Signed-off-by: Mark Yao <mark.yao@rock-chips.com> Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
parent
4b7491b317
commit
c85af5021b
|
|
@ -990,6 +990,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,
|
||||
.fops = &rockchip_drm_driver_fops,
|
||||
.name = DRIVER_NAME,
|
||||
.desc = DRIVER_DESC,
|
||||
|
|
|
|||
|
|
@ -427,7 +427,7 @@ static void rockchip_gem_release_object(struct rockchip_gem_object *rk_obj)
|
|||
kfree(rk_obj);
|
||||
}
|
||||
|
||||
struct rockchip_gem_object *
|
||||
static struct rockchip_gem_object *
|
||||
rockchip_gem_alloc_object(struct drm_device *drm, unsigned int size)
|
||||
{
|
||||
struct rockchip_gem_object *rk_obj;
|
||||
|
|
@ -697,3 +697,31 @@ 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,
|
||||
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;
|
||||
}
|
||||
|
||||
int rockchip_gem_prime_end_cpu_access(struct drm_gem_object *obj,
|
||||
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_device(drm->dev, rk_obj->sgt->sgl,
|
||||
rk_obj->sgt->nents, dir);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,4 +58,10 @@ 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);
|
||||
|
||||
int rockchip_gem_prime_begin_cpu_access(struct drm_gem_object *obj,
|
||||
enum dma_data_direction dir);
|
||||
|
||||
int rockchip_gem_prime_end_cpu_access(struct drm_gem_object *obj,
|
||||
enum dma_data_direction dir);
|
||||
#endif /* _ROCKCHIP_DRM_GEM_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user