From 4cb0a74c1224448275a766b979a8e8f55d388cd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20G=C3=BCnther?= Date: Mon, 30 Nov 2009 21:20:34 +0000 Subject: [PATCH] Enabling linkage of the iprowifi2100 driver. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34392 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../drivers/network/wlan/iprowifi2100/Jamfile | 1 + .../drivers/network/wlan/iprowifi2100/glue.c | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/add-ons/kernel/drivers/network/wlan/iprowifi2100/glue.c diff --git a/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/Jamfile b/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/Jamfile index 88c0057315..8476e44e82 100644 --- a/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/Jamfile +++ b/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/Jamfile @@ -17,6 +17,7 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) dev ipw ] ; KernelAddon iprowifi2100 : if_ipw.c + glue.c : libfreebsd_wlan.a libfreebsd_network.a diff --git a/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/glue.c b/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/glue.c new file mode 100644 index 0000000000..f610492d58 --- /dev/null +++ b/src/add-ons/kernel/drivers/network/wlan/iprowifi2100/glue.c @@ -0,0 +1,55 @@ +/* + * 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 + + +HAIKU_FBSD_WLAN_DRIVER_GLUE(iprowifi2100, ipw, pci) +NO_HAIKU_FBSD_MII_DRIVER(); +HAIKU_DRIVER_REQUIREMENTS(FBSD_TASKQUEUES|FBSD_WLAN); +HAIKU_FIRMWARE_VERSION(130); + + +int +HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev) +{ + struct ipw_softc* sc = (struct ipw_softc*)device_get_softc(dev); + uint32 r; + HAIKU_INTR_REGISTER_STATE; + + HAIKU_INTR_REGISTER_ENTER(); + if ((r = CSR_READ_4(sc, IPW_CSR_INTR)) == 0 || r == 0xffffffff) { + HAIKU_INTR_REGISTER_LEAVE(); + return 0; + } + + /* disable interrupts */ + CSR_WRITE_4(sc, IPW_CSR_INTR_MASK, 0); + + HAIKU_INTR_REGISTER_LEAVE(); + + return 1; +} + + +void +HAIKU_REENABLE_INTERRUPTS(device_t dev) +{ + struct ipw_softc* sc = (struct ipw_softc*)device_get_softc(dev); + + /* enable interrupts */ + CSR_WRITE_4(sc, IPW_CSR_INTR_MASK, IPW_INTR_MASK); +}