71 lines
2.4 KiB
Diff
71 lines
2.4 KiB
Diff
--- a/src/shared/linux_osl.c
|
|
+++ b/src/shared/linux_osl.c
|
|
@@ -599,6 +599,8 @@ osl_dma_alloc_consistent(osl_t *osh, uin
|
|
va = kmalloc(size, GFP_ATOMIC | __GFP_ZERO);
|
|
if (va)
|
|
*pap = (ulong)__virt_to_phys(va);
|
|
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ va = dma_alloc_coherent(&((struct pci_dev *)osh->pdev)->dev, size, (dma_addr_t*)pap, GFP_ATOMIC);
|
|
#else
|
|
va = pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap);
|
|
#endif
|
|
@@ -612,6 +614,8 @@ osl_dma_free_consistent(osl_t *osh, void
|
|
|
|
#ifdef __ARM_ARCH_7A__
|
|
kfree(va);
|
|
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ dma_free_coherent(&((struct pci_dev *)osh->pdev)->dev, size, va, (dma_addr_t)pa);
|
|
#else
|
|
pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa);
|
|
#endif
|
|
@@ -623,7 +627,11 @@ osl_dma_map(osl_t *osh, void *va, uint s
|
|
int dir;
|
|
|
|
ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE;
|
|
+#else
|
|
dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
|
|
+#endif
|
|
|
|
#if defined(__ARM_ARCH_7A__) && defined(BCMDMASGLISTOSL)
|
|
if (dmah != NULL) {
|
|
@@ -641,7 +649,11 @@ osl_dma_map(osl_t *osh, void *va, uint s
|
|
ASSERT(totsegs + nsegs <= MAX_DMA_SEGS);
|
|
sg->page_link = 0;
|
|
sg_set_buf(sg, PKTDATA(osh, skb), PKTLEN(osh, skb));
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ dma_map_single(&((struct pci_dev *)osh->pdev)->dev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir);
|
|
+#else
|
|
pci_map_single(osh->pdev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir);
|
|
+#endif
|
|
}
|
|
totsegs += nsegs;
|
|
totlen += PKTLEN(osh, skb);
|
|
@@ -656,7 +668,11 @@ osl_dma_map(osl_t *osh, void *va, uint s
|
|
}
|
|
#endif
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ return (dma_map_single(&((struct pci_dev *)osh->pdev)->dev, va, size, dir));
|
|
+#else
|
|
return (pci_map_single(osh->pdev, va, size, dir));
|
|
+#endif
|
|
}
|
|
|
|
void BCMFASTPATH
|
|
@@ -665,8 +681,13 @@ osl_dma_unmap(osl_t *osh, uint pa, uint
|
|
int dir;
|
|
|
|
ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
|
+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE;
|
|
+ dma_unmap_single(&((struct pci_dev *)osh->pdev)->dev, (uint32)pa, size, dir);
|
|
+#else
|
|
dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
|
|
pci_unmap_single(osh->pdev, (uint32)pa, size, dir);
|
|
+#endif
|
|
}
|
|
|
|
#if defined(BCMDBG_ASSERT)
|