WLAN driver broadcom43xx links now. Needs to be tested as I don't own the
required hardware (many current Macbooks). This driver needs a firmware. The retrieval of this firmware requires following steps: a) Download the linux firmware from http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o b) Download and compile b43-fwcutter from http://bu3sch.de/b43/fwcutter/b43-fwcutter-011.tar.bz2 c) Use b43-fwcutter to cut the linux firmware in pieces. d) Copy those pieces into /system/data/firmware/broadcom43xx/ e) Prepend them with bwi_v3_ and remove the .fw ending. f) You also need to create an empty file called bwi_v3_ucode in this directory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34435 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -21,6 +21,7 @@ KernelAddon broadcom43xx :
|
||||
bwimac.c
|
||||
bwiphy.c
|
||||
bwirf.c
|
||||
glue.c
|
||||
:
|
||||
libfreebsd_wlan.a
|
||||
libfreebsd_network.a
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2009, Colin Günther, [email protected].
|
||||
* All Rights Reserved. Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
#include <sys/bus.h>
|
||||
#include <sys/kernel.h>
|
||||
|
||||
#include <machine/bus.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_media.h>
|
||||
|
||||
#include <net80211/ieee80211_var.h>
|
||||
#include <net80211/ieee80211_amrr.h>
|
||||
|
||||
#include <dev/bwi/bitops.h>
|
||||
#include <dev/bwi/if_bwireg.h>
|
||||
#include <dev/bwi/if_bwivar.h>
|
||||
|
||||
|
||||
HAIKU_FBSD_WLAN_DRIVER_GLUE(broadcom43xx, bwi, pci)
|
||||
NO_HAIKU_FBSD_MII_DRIVER();
|
||||
HAIKU_DRIVER_REQUIREMENTS(FBSD_TASKQUEUES|FBSD_WLAN);
|
||||
HAIKU_FIRMWARE_VERSION(0);
|
||||
|
||||
int
|
||||
HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
|
||||
{
|
||||
struct bwi_softc* sc = (struct bwi_softc*)device_get_softc(dev);
|
||||
HAIKU_INTR_REGISTER_STATE;
|
||||
|
||||
HAIKU_INTR_REGISTER_ENTER();
|
||||
if (CSR_READ_4(sc, BWI_MAC_INTR_STATUS) == 0xffffffff) {
|
||||
/* Not for us */
|
||||
HAIKU_INTR_REGISTER_LEAVE();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Disable all interrupts */
|
||||
CSR_CLRBITS_4(sc, BWI_MAC_INTR_MASK, BWI_ALL_INTRS);
|
||||
|
||||
HAIKU_INTR_REGISTER_LEAVE();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
HAIKU_REENABLE_INTERRUPTS(device_t dev)
|
||||
{
|
||||
struct bwi_softc* sc = (struct bwi_softc*)device_get_softc(dev);
|
||||
|
||||
/* enable interrupts */
|
||||
CSR_SETBITS_4(sc, BWI_MAC_INTR_MASK, BWI_INIT_INTRS);
|
||||
}
|
||||
Reference in New Issue
Block a user