[haiku-commits] r34435 - haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx

  • From: coling@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 2 Dec 2009 03:34:27 +0100 (CET)

Author: colin
Date: 2009-12-02 03:34:27 +0100 (Wed, 02 Dec 2009)
New Revision: 34435
Changeset: http://dev.haiku-os.org/changeset/34435/haiku

Added:
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c
Modified:
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile
Log:
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.


Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile    
2009-12-01 23:49:10 UTC (rev 34434)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/Jamfile    
2009-12-02 02:34:27 UTC (rev 34435)
@@ -21,6 +21,7 @@
        bwimac.c
        bwiphy.c
        bwirf.c
+       glue.c
        :
        libfreebsd_wlan.a
        libfreebsd_network.a

Added: haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c     
                        (rev 0)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c     
2009-12-02 02:34:27 UTC (rev 34435)
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2009, Colin Günther, coling@xxxxxxx
+ * 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);
+}


Other related posts: