Bug#955415: Compile fix with kernel 5.6.0

2020-04-12 Thread Roger Shimizu
control: tags -1 +patch +pending

Latest commit should fix it:
- https://salsa.debian.org/broadcom-sta-team/broadcom-sta/-/commit/8ce8c7f

Cheers,
-- 
Roger Shimizu, GMT +9 Tokyo
PGP/GPG: 4096R/6C6ACD6417B3ACB1



Bug#955415: Compile fix with kernel 5.6.0

2020-03-31 Thread koos vriezen
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
d56c0d45f0e27f814e87a1676b6bdbc252e9 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 & 0xff00) != 0)
 		pci_write_config_dword(pdev, 0x40, val & 0x00ff);
 		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, _fops, wl)) == NULL) {
+	if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _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.0 +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