Fix broadcom_sta for linux-3.4 and clean nix source.
Idea from Kevin Quick, implementation from Gentoo. Also cleaned and added a minor license patch from Gentoo. Builds for many x86_64 kernels.
This commit is contained in:
parent
0b9284c8da
commit
196f5cb265
@ -7,7 +7,7 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "broadcom-sta-${version}-${kernel.version}";
|
name = "broadcom-sta-${version}-${kernel.version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_${bits}-v${version}.tar.gz";
|
url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_${bits}-v${version}.tar.gz";
|
||||||
sha256 = if bits == "32"
|
sha256 = if bits == "32"
|
||||||
@ -16,12 +16,10 @@ stdenv.mkDerivation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ kernel ];
|
buildInputs = [ kernel ];
|
||||||
patches = [ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch ];
|
patches =
|
||||||
#++ stdenv.lib.optional
|
[ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch
|
||||||
#(! builtins.lessThan (builtins.compareVersions kernel.version "2.6.37") 0)
|
./linux-3.4.patch ./license.patch
|
||||||
#[ ./mutex-sema.patch ];
|
];
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = "-I${kernel}/lib/modules/${kernel.modDirVersion}/build/include/generated";
|
|
||||||
|
|
||||||
makeFlags = "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build";
|
makeFlags = "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build";
|
||||||
|
|
||||||
|
12
pkgs/os-specific/linux/broadcom-sta/license.patch
Normal file
12
pkgs/os-specific/linux/broadcom-sta/license.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -Naur hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c
|
||||||
|
--- hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c 2009-04-23 02:48:59.000000000 +0900
|
||||||
|
+++ hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c 2009-05-08 00:48:20.000000000 +0900
|
||||||
|
@@ -163,6 +163,8 @@
|
||||||
|
static void wl_free_if(wl_info_t *wl, wl_if_t *wlif);
|
||||||
|
static void wl_get_driver_info(struct net_device *dev, struct ethtool_drvinfo *info);
|
||||||
|
|
||||||
|
+MODULE_LICENSE("MIXED/Proprietary");
|
||||||
|
+
|
||||||
|
static struct pci_device_id wl_id_table[] = {
|
||||||
|
{ PCI_VENDOR_ID_BROADCOM, 0x4311, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
|
||||||
|
{ PCI_VENDOR_ID_BROADCOM, 0x4312, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
|
12
pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch
Normal file
12
pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
--- broadcom-sta.orig/src/wl/sys/wl_linux.c
|
||||||
|
+++ broadcom-sta.new/src/wl/sys/wl_linux.c
|
||||||
|
@@ -40,7 +40,9 @@
|
||||||
|
#include <linux/pci_ids.h>
|
||||||
|
#define WLC_MAXBSSCFG 1
|
||||||
|
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
|
||||||
|
#include <asm/system.h>
|
||||||
|
+#endif
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
#include <asm/pgtable.h>
|
@ -1,12 +0,0 @@
|
|||||||
diff -aur old/src/wl/sys/wl_linux.c new/src/wl/sys/wl_linux.c
|
|
||||||
--- old/src/wl/sys/wl_linux.c 2010-12-25 18:17:33.333343048 +0100
|
|
||||||
+++ new/src/wl/sys/wl_linux.c 2010-12-25 18:21:05.856676376 +0100
|
|
||||||
@@ -483,7 +483,7 @@
|
|
||||||
#ifdef WL_ALL_PASSIVE
|
|
||||||
spin_lock_init(&wl->txq_lock);
|
|
||||||
#endif
|
|
||||||
- init_MUTEX(&wl->sem);
|
|
||||||
+ sema_init(&wl->sem, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(wl->wlc = wlc_attach((void *) wl, vendor, device, unit, wl->piomode,
|
|
Loading…
Reference in New Issue
Block a user