[haiku-commits] r34411 - haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945

  • From: coling@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 1 Dec 2009 16:36:27 +0100 (CET)

Author: colin
Date: 2009-12-01 16:36:27 +0100 (Tue, 01 Dec 2009)
New Revision: 34411
Changeset: http://dev.haiku-os.org/changeset/34411/haiku

Added:
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/glue.c
Modified:
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/Jamfile
Log:
iprowifi3945 now links. Still needs to be tested as I don't own the needed
hardware.


Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/Jamfile
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/Jamfile    
2009-12-01 15:02:50 UTC (rev 34410)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/Jamfile    
2009-12-01 15:36:27 UTC (rev 34411)
@@ -16,6 +16,7 @@
 
 KernelAddon iprowifi3945 :
        if_wpi.c
+       glue.c
        :
        libfreebsd_wlan.a
        libfreebsd_network.a

Added: haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/glue.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/glue.c     
                        (rev 0)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi3945/glue.c     
2009-12-01 15:36:27 UTC (rev 34411)
@@ -0,0 +1,55 @@
+/*
+ * 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 <dev/wpi/if_wpireg.h>
+#include <dev/wpi/if_wpivar.h>
+
+
+HAIKU_FBSD_WLAN_DRIVER_GLUE(iprowifi3945, wpi, pci)
+NO_HAIKU_FBSD_MII_DRIVER();
+HAIKU_DRIVER_REQUIREMENTS(FBSD_TASKQUEUES|FBSD_WLAN);
+HAIKU_FIRMWARE_VERSION(2144);
+
+
+int
+HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
+{
+       struct wpi_softc* sc = (struct wpi_softc*)device_get_softc(dev);
+       uint32 r;
+       HAIKU_INTR_REGISTER_STATE;
+       
+       HAIKU_INTR_REGISTER_ENTER();
+       if ((r = WPI_READ(sc, WPI_INTR)) == 0 || r == 0xffffffff) {
+               HAIKU_INTR_REGISTER_LEAVE();
+               return 0;
+       }
+
+       /* disable interrupts */
+       WPI_WRITE(sc, WPI_MASK, 0);
+       
+       HAIKU_INTR_REGISTER_LEAVE();
+
+       return 1;
+}
+
+
+void
+HAIKU_REENABLE_INTERRUPTS(device_t dev)
+{
+       struct wpi_softc* sc = (struct wpi_softc*)device_get_softc(dev);
+
+       /* enable interrupts */
+       WPI_WRITE(sc, WPI_MASK, WPI_INTR_MASK);
+}


Other related posts: