d4854eb632
I did the research: the commit times and authors are as correct as an afternoon of internet spelunking can make them.
93 lines
3.1 KiB
Diff
93 lines
3.1 KiB
Diff
From 24decccfadc0d95b973e6dd8d476ddde2f0a4b21 Mon Sep 17 00:00:00 2001
|
|
From: Herman van Hazendonk <github.com@herrie.org>
|
|
Date: Tue, 31 Mar 2020 17:09:55 +0200
|
|
Subject: [PATCH 10/16] linuxPackages.broadcom_sta: fix build for kernel 5.6+
|
|
|
|
Use ioremap instead of ioremap_nocache and proc_ops instead of file_operations on Linux kernel 5.6 and above.
|
|
|
|
Signed-off-by: Herman van Hazendonk <github.com@herrie.org>
|
|
|
|
Source: https://salsa.debian.org/Herrie82-guest/broadcom-sta/-/commit/247307926e5540ad574a17c062c8da76990d056f
|
|
---
|
|
src/shared/linux_osl.c | 6 +++++-
|
|
src/wl/sys/wl_linux.c | 21 ++++++++++++++++++++-
|
|
2 files changed, 25 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c
|
|
index 6157d18..dcfc075 100644
|
|
--- a/src/shared/linux_osl.c
|
|
+++ b/src/shared/linux_osl.c
|
|
@@ -942,7 +942,11 @@ osl_getcycles(void)
|
|
void *
|
|
osl_reg_map(uint32 pa, uint size)
|
|
{
|
|
- return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
|
|
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
|
|
+ return (ioremap((unsigned long)pa, (unsigned long)size));
|
|
+ #else
|
|
+ return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
|
|
+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
|
|
}
|
|
|
|
void
|
|
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
|
|
index 83b8859..646f1d9 100644
|
|
--- a/src/wl/sys/wl_linux.c
|
|
+++ b/src/wl/sys/wl_linux.c
|
|
@@ -591,10 +591,17 @@ wl_attach(uint16 vendor, uint16 device, ulong regs,
|
|
}
|
|
wl->bcm_bustype = bustype;
|
|
|
|
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
|
|
+ if ((wl->regsva = ioremap(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
|
|
+ WL_ERROR(("wl%d: ioremap() failed\n", unit));
|
|
+ goto fail;
|
|
+ }
|
|
+ #else
|
|
if ((wl->regsva = ioremap_nocache(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
|
|
WL_ERROR(("wl%d: ioremap() failed\n", unit));
|
|
goto fail;
|
|
}
|
|
+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
|
|
|
|
wl->bar1_addr = bar1_addr;
|
|
wl->bar1_size = bar1_size;
|
|
@@ -781,8 +788,13 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
if ((val & 0x0000ff00) != 0)
|
|
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
|
|
bar1_size = pci_resource_len(pdev, 2);
|
|
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
|
|
+ bar1_addr = (uchar *)ioremap(pci_resource_start(pdev, 2),
|
|
+ bar1_size);
|
|
+ #else
|
|
bar1_addr = (uchar *)ioremap_nocache(pci_resource_start(pdev, 2),
|
|
bar1_size);
|
|
+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
|
|
wl = wl_attach(pdev->vendor, pdev->device, pci_resource_start(pdev, 0), PCI_BUS, pdev,
|
|
pdev->irq, bar1_addr, bar1_size);
|
|
|
|
@@ -3363,12 +3375,19 @@ wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t
|
|
}
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
|
|
+static const struct proc_ops wl_fops = {
|
|
+ .proc_read = wl_proc_read,
|
|
+ .proc_write = wl_proc_write,
|
|
+};
|
|
+#else
|
|
static const struct file_operations wl_fops = {
|
|
.owner = THIS_MODULE,
|
|
.read = wl_proc_read,
|
|
.write = wl_proc_write,
|
|
};
|
|
-#endif
|
|
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
|
|
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) */
|
|
|
|
static int
|
|
wl_reg_proc_entry(wl_info_t *wl)
|
|
--
|
|
2.45.1
|
|
|