From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/drivers/video/rockchip/rga3/rga_dma_buf.c | 21 ++++++++++++++++----- 1 files changed, 16 insertions(+), 5 deletions(-) diff --git a/kernel/drivers/video/rockchip/rga3/rga_dma_buf.c b/kernel/drivers/video/rockchip/rga3/rga_dma_buf.c index 7180100..db34db5 100644 --- a/kernel/drivers/video/rockchip/rga3/rga_dma_buf.c +++ b/kernel/drivers/video/rockchip/rga3/rga_dma_buf.c @@ -203,7 +203,7 @@ size_t size, u64 dma_limit, struct device *dev) { - struct rga_iommu_dma_cookie *cookie = domain->iova_cookie; + struct rga_iommu_dma_cookie *cookie = (void *)domain->iova_cookie; struct iova_domain *iovad = &cookie->iovad; unsigned long shift, iova_len, iova = 0; @@ -246,7 +246,7 @@ static void rga_iommu_dma_free_iova(struct iommu_domain *domain, dma_addr_t iova, size_t size) { - struct rga_iommu_dma_cookie *cookie = domain->iova_cookie; + struct rga_iommu_dma_cookie *cookie = (void *)domain->iova_cookie; struct iova_domain *iovad = &cookie->iovad; free_iova_fast(iovad, iova_pfn(iovad, iova), size >> iova_shift(iovad)); @@ -285,7 +285,7 @@ } domain = rga_iommu_get_dma_domain(rga_dev); - cookie = domain->iova_cookie; + cookie = (void *)domain->iova_cookie; iovad = &cookie->iovad; align_size = iova_align(iovad, size); @@ -330,7 +330,7 @@ } domain = rga_iommu_get_dma_domain(rga_dev); - cookie = domain->iova_cookie; + cookie = (void *)domain->iova_cookie; iovad = &cookie->iovad; align_size = iova_align(iovad, size); @@ -394,12 +394,20 @@ { int ret = 0; void *vaddr; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + struct iosys_map map; +#endif struct dma_buf *dma_buf; dma_buf = rga_dma_buffer->dma_buf; if (!IS_ERR_OR_NULL(dma_buf)) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + ret = dma_buf_vmap(dma_buf, &map); + vaddr = ret ? NULL : map.vaddr; +#else vaddr = dma_buf_vmap(dma_buf); +#endif if (vaddr) { ret = rga_virtual_memory_check(vaddr, img->vir_w, img->vir_h, img->format, img->yrgb_addr); @@ -407,8 +415,11 @@ pr_err("can't vmap the dma buffer!\n"); return -EINVAL; } - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) + dma_buf_vunmap(dma_buf, &map); +#else dma_buf_vunmap(dma_buf, vaddr); +#endif } return ret; -- Gitblit v1.6.2