mirror of
https://gitlab.com/nonguix/nonguix.git
synced 2024-12-23 15:24:52 +01:00
nongnu: broadcom-sta: Fix build on linux 5.6 and later.
* nongnu/packages/linux.scm (broadcom-sta-x86_64-source): Add file. * nongnu/packages/patches/broadcom-sta-linux-5.6.patch: New patch from NixOS. Signed-off-by: Alex Griffin <a@ajgrf.com>
This commit is contained in:
parent
4339e68cfb
commit
46f0547029
2 changed files with 91 additions and 1 deletions
|
@ -2,6 +2,7 @@
|
||||||
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||||
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
|
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||||
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
|
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
|
||||||
|
;;; Copyright © 2020 James Smith <jsubuntuxp@disroot.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This program is free software: you can redistribute it and/or modify
|
;;; This program is free software: you can redistribute it and/or modify
|
||||||
;;; it under the terms of the GNU General Public License as published by
|
;;; it under the terms of the GNU General Public License as published by
|
||||||
|
@ -555,7 +556,9 @@ package contains nonfree firmware for the following chips:
|
||||||
"broadcom-sta-linux-4.12.patch"
|
"broadcom-sta-linux-4.12.patch"
|
||||||
"broadcom-sta-linux-4.15.patch"
|
"broadcom-sta-linux-4.15.patch"
|
||||||
"broadcom-sta-fix_mac_profile_discrepancy.patch"
|
"broadcom-sta-fix_mac_profile_discrepancy.patch"
|
||||||
"broadcom-sta-linux-5.1.patch")))
|
"broadcom-sta-linux-5.1.patch"
|
||||||
|
;; source: https://github.com/NixOS/nixpkgs/commit/8ce65087c333097ab714d23800b69fc471ec48ca
|
||||||
|
"broadcom-sta-linux-5.6.patch")))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"))))
|
"1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"))))
|
||||||
|
|
87
nongnu/packages/patches/broadcom-sta-linux-5.6.patch
Normal file
87
nongnu/packages/patches/broadcom-sta-linux-5.6.patch
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
From dd057e40a167f4febb1a7c77dd32b7d36056952c 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] Add fixes for 5.6 kernel
|
||||||
|
|
||||||
|
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>
|
||||||
|
---
|
||||||
|
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 0d05100..6d9dd0d 100644
|
||||||
|
--- a/src/wl/sys/wl_linux.c
|
||||||
|
+++ b/src/wl/sys/wl_linux.c
|
||||||
|
@@ -582,10 +582,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;
|
||||||
|
@@ -772,8 +779,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);
|
||||||
|
|
||||||
|
@@ -3335,12 +3347,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)
|
Loading…
Reference in a new issue