From abc6c938fd58317a609e4279f7061998afcdbd93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20G=C3=BCnther?= Date: Wed, 2 Dec 2009 02:34:27 +0000 Subject: [PATCH] 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 --- .../drivers/network/wlan/broadcom43xx/Jamfile | 1 + .../drivers/network/wlan/broadcom43xx/glue.c | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c diff --git a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile index db1b923b28..2ed9c7d1a5 100644 --- a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile +++ b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile @@ -21,6 +21,7 @@ KernelAddon broadcom43xx : bwimac.c bwiphy.c bwirf.c + glue.c : libfreebsd_wlan.a libfreebsd_network.a diff --git a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c new file mode 100644 index 0000000000..aff69ea3a0 --- /dev/null +++ b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c @@ -0,0 +1,56 @@ +/* + * Copyright 2009, Colin Günther, coling@gmx.de. + * All Rights Reserved. Distributed under the terms of the MIT License. + */ + +#include +#include + +#include + +#include +#include + +#include +#include + +#include +#include +#include + + +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); +}