From: Eduard Bloch Date: Sat, 30 Jul 2022 01:55:23 -0500 Subject: linux518 --- amd64/src/shared/linux_osl.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/amd64/src/shared/linux_osl.c b/amd64/src/shared/linux_osl.c index 9bce9b1..34d6c10 100644 --- a/amd64/src/shared/linux_osl.c +++ b/amd64/src/shared/linux_osl.c @@ -599,6 +599,8 @@ osl_dma_alloc_consistent(osl_t *osh, uint size, uint16 align_bits, uint *alloced 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 *va, uint size, ulong pa) #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 size, int direction, void *p, hnddma_seg_ 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 size, int direction, void *p, hnddma_seg_ 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 size, int direction, void *p, hnddma_seg_ } #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 size, int direction) 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)