Package: broadcom-sta-source Version: 6.30.223.271-11 I use the attached patch to get this module compiled with 5.6.0. Works fine for me the last few days.
Based on these two patches here https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.6.y 4bdc0d676a643140bdf17dbf7eafedee3d496a3c remove ioremap_nocache and devm_ioremap_nocache d56c0d45f0e27f814e87a1676b6bdccccbc252e9 proc: decouple proc from VFS with "struct proc_ops" According the first patch log message, this ioremap renaming could be done for much earlier kernels. So I didn't bother to ifdef these changes. Cheers, Koos Vriezen
--- src/wl/sys/wl_linux.c.orig 2020-03-30 13:45:58.062809026 +0200 +++ src/wl/sys/wl_linux.c 2020-03-31 14:34:29.111418503 +0200 @@ -590,7 +590,7 @@ wl_attach(uint16 vendor, uint16 device, } wl->bcm_bustype = bustype; - if ((wl->regsva = ioremap_nocache(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) { + if ((wl->regsva = ioremap(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) { WL_ERROR(("wl%d: ioremap() failed\n", unit)); goto fail; } @@ -780,7 +780,7 @@ wl_pci_probe(struct pci_dev *pdev, const if ((val & 0x0000ff00) != 0) pci_write_config_dword(pdev, 0x40, val & 0xffff00ff); bar1_size = pci_resource_len(pdev, 2); - bar1_addr = (uchar *)ioremap_nocache(pci_resource_start(pdev, 2), + bar1_addr = (uchar *)ioremap(pci_resource_start(pdev, 2), bar1_size); wl = wl_attach(pdev->vendor, pdev->device, pci_resource_start(pdev, 0), PCI_BUS, pdev, pdev->irq, bar1_addr, bar1_size); @@ -3353,8 +3353,13 @@ wl_proc_write(struct file *filp, const c return length; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) -static const struct file_operations wl_fops = { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) +static const struct proc_ops wl_ops = { + .proc_read = wl_proc_read, + .proc_write = wl_proc_write, +}; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) +static const struct proc_ops wl_ops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, @@ -3370,7 +3375,7 @@ wl_reg_proc_entry(wl_info_t *wl) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else - if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) { + if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_ops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); --- src/shared/linux_osl.c.orig 2019-08-15 17:06:31.000000000 +0200 +++ src/shared/linux_osl.c 2020-03-30 13:45:22.203692455 +0200 @@ -946,7 +946,7 @@ osl_getcycles(void) void * osl_reg_map(uint32 pa, uint size) { - return (ioremap_nocache((unsigned long)pa, (unsigned long)size)); + return (ioremap((unsigned long)pa, (unsigned long)size)); } void