From 2563d569fec67728bf53b460e04c0e020be28d9d Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Mon, 10 May 2021 16:52:04 +0800 Subject: [PATCH] drm/rockchip: gem: add flag ROCKCHIP_BO_ALLOC_KMAP to assign kmap RGA need to access CMA buffer at kernel space, so add this flag to keep kernel line mapping for RGA. Change-Id: Ia59acee3c904a495792229a80c42f74ae34200e3 Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 3 ++- include/uapi/drm/rockchip_drm.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c index c508e10c76b2..c945597253cc 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -681,8 +681,9 @@ rockchip_gem_create_with_handle(struct drm_file *file_priv, struct rockchip_gem_object *rk_obj; struct drm_gem_object *obj; int ret; + bool alloc_kmap = flags & ROCKCHIP_BO_ALLOC_KMAP ? true : false; - rk_obj = rockchip_gem_create_object(drm, size, false, flags); + rk_obj = rockchip_gem_create_object(drm, size, alloc_kmap, flags); if (IS_ERR(rk_obj)) return ERR_CAST(rk_obj); diff --git a/include/uapi/drm/rockchip_drm.h b/include/uapi/drm/rockchip_drm.h index 089525dc47e3..aff0e49fb682 100644 --- a/include/uapi/drm/rockchip_drm.h +++ b/include/uapi/drm/rockchip_drm.h @@ -34,8 +34,10 @@ enum drm_rockchip_gem_mem_type { /* write-combine mapping. */ ROCKCHIP_BO_WC = 1 << 2, ROCKCHIP_BO_SECURE = 1 << 3, + /* keep kmap for cma buffer or alloc kmap for other type memory */ + ROCKCHIP_BO_ALLOC_KMAP = 1 << 4, ROCKCHIP_BO_MASK = ROCKCHIP_BO_CONTIG | ROCKCHIP_BO_CACHABLE | - ROCKCHIP_BO_WC | ROCKCHIP_BO_SECURE, + ROCKCHIP_BO_WC | ROCKCHIP_BO_SECURE | ROCKCHIP_BO_ALLOC_KMAP, }; /**