hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/video/rockchip/rga3/rga_dma_buf.c
....@@ -203,7 +203,7 @@
203203 size_t size, u64 dma_limit,
204204 struct device *dev)
205205 {
206
- struct rga_iommu_dma_cookie *cookie = domain->iova_cookie;
206
+ struct rga_iommu_dma_cookie *cookie = (void *)domain->iova_cookie;
207207 struct iova_domain *iovad = &cookie->iovad;
208208 unsigned long shift, iova_len, iova = 0;
209209
....@@ -246,7 +246,7 @@
246246 static void rga_iommu_dma_free_iova(struct iommu_domain *domain,
247247 dma_addr_t iova, size_t size)
248248 {
249
- struct rga_iommu_dma_cookie *cookie = domain->iova_cookie;
249
+ struct rga_iommu_dma_cookie *cookie = (void *)domain->iova_cookie;
250250 struct iova_domain *iovad = &cookie->iovad;
251251
252252 free_iova_fast(iovad, iova_pfn(iovad, iova), size >> iova_shift(iovad));
....@@ -285,7 +285,7 @@
285285 }
286286
287287 domain = rga_iommu_get_dma_domain(rga_dev);
288
- cookie = domain->iova_cookie;
288
+ cookie = (void *)domain->iova_cookie;
289289 iovad = &cookie->iovad;
290290 align_size = iova_align(iovad, size);
291291
....@@ -330,7 +330,7 @@
330330 }
331331
332332 domain = rga_iommu_get_dma_domain(rga_dev);
333
- cookie = domain->iova_cookie;
333
+ cookie = (void *)domain->iova_cookie;
334334 iovad = &cookie->iovad;
335335 align_size = iova_align(iovad, size);
336336
....@@ -394,12 +394,20 @@
394394 {
395395 int ret = 0;
396396 void *vaddr;
397
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
398
+ struct iosys_map map;
399
+#endif
397400 struct dma_buf *dma_buf;
398401
399402 dma_buf = rga_dma_buffer->dma_buf;
400403
401404 if (!IS_ERR_OR_NULL(dma_buf)) {
405
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
406
+ ret = dma_buf_vmap(dma_buf, &map);
407
+ vaddr = ret ? NULL : map.vaddr;
408
+#else
402409 vaddr = dma_buf_vmap(dma_buf);
410
+#endif
403411 if (vaddr) {
404412 ret = rga_virtual_memory_check(vaddr, img->vir_w,
405413 img->vir_h, img->format, img->yrgb_addr);
....@@ -407,8 +415,11 @@
407415 pr_err("can't vmap the dma buffer!\n");
408416 return -EINVAL;
409417 }
410
-
418
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
419
+ dma_buf_vunmap(dma_buf, &map);
420
+#else
411421 dma_buf_vunmap(dma_buf, vaddr);
422
+#endif
412423 }
413424
414425 return ret;