From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_gem.c index 946d8e3..ce31e32 100644 --- a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -38,7 +38,7 @@ { struct drm_device *drm = rk_obj->base.dev; struct rockchip_drm_private *private = drm->dev_private; - int prot = IOMMU_READ | IOMMU_WRITE | IOMMU_TLB_SHOT_ENTIRE; + int prot = IOMMU_READ | IOMMU_WRITE; ssize_t ret; mutex_lock(&private->mm_lock); @@ -62,6 +62,11 @@ ret = -ENOMEM; goto err_remove_node; } + +#ifdef CONFIG_IOMMU_API + if (private->domain->ops->flush_iotlb_all) + private->domain->ops->flush_iotlb_all(private->domain); +#endif rk_obj->size = ret; @@ -459,6 +464,11 @@ rk_obj->base.size); } +static inline bool is_vop_enabled(void) +{ + return (IS_ENABLED(CONFIG_ROCKCHIP_VOP) || IS_ENABLED(CONFIG_ROCKCHIP_VOP2)); +} + static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj, bool alloc_kmap) { @@ -467,7 +477,7 @@ struct rockchip_drm_private *private = drm->dev_private; int ret = 0; - if (!private->domain) + if (!private->domain && is_vop_enabled()) rk_obj->flags |= ROCKCHIP_BO_CONTIG; if (rk_obj->flags & ROCKCHIP_BO_SECURE) { @@ -507,7 +517,7 @@ ret = rockchip_gem_iommu_map(rk_obj); if (ret < 0) goto err_free; - } else { + } else if (is_vop_enabled()) { WARN_ON(!rk_obj->dma_handle); rk_obj->dma_addr = rk_obj->dma_handle; } @@ -819,7 +829,7 @@ struct drm_mode_create_dumb *args) { struct rockchip_gem_object *rk_obj; - int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); + u32 min_pitch = args->width * DIV_ROUND_UP(args->bpp, 8); /* * align to 64 bytes since Mali requires it. -- Gitblit v1.6.2