mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-03 20:33:21 +00:00
d4854eb632
I did the research: the commit times and authors are as correct as an afternoon of internet spelunking can make them.
85 lines
3.0 KiB
Diff
85 lines
3.0 KiB
Diff
From 6c66b0eaaa3e6ebaa84891298715b71f7b2f0b1c Mon Sep 17 00:00:00 2001
|
|
From: X9VoiD <oscar.silvestrexx@gmail.com>
|
|
Date: Mon, 13 Jun 2022 17:38:18 +0800
|
|
Subject: [PATCH 13/16] linuxPackages.broadcom_sta: fix build for kernel 5.18+
|
|
|
|
---
|
|
src/shared/linux_osl.c | 21 +++++++++++++++++++++
|
|
1 file changed, 21 insertions(+)
|
|
|
|
diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c
|
|
index dcfc075..5a25b82 100644
|
|
--- a/src/shared/linux_osl.c
|
|
+++ b/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)
|
|
--
|
|
2.45.1
|
|
|