1/*
2 * Copyright 2009, Colin G��nther, coling@gmx.de.
3 * All Rights Reserved. Distributed under the terms of the MIT License.
4 */
5
6
7#include <sys/bus.h>
8#include <sys/kernel.h>
9
10#include <machine/bus.h>
11
12#include <net/if.h>
13#include <net/if_media.h>
14
15#include <net80211/ieee80211_var.h>
16
17#include <dev/ipw/if_ipwreg.h>
18#include <dev/ipw/if_ipwvar.h>
19
20
21HAIKU_FBSD_WLAN_DRIVER_GLUE(iprowifi2100, ipw, pci)
22NO_HAIKU_FBSD_MII_DRIVER();
23NO_HAIKU_REENABLE_INTERRUPTS();
24HAIKU_DRIVER_REQUIREMENTS(FBSD_SWI_TASKQUEUE | FBSD_WLAN);
25HAIKU_FIRMWARE_VERSION(130);
26HAIKU_FIRMWARE_NAME_MAP({
27	{"ipw_bss", "ipw2100-1.3.fw"},
28	{"ipw_ibss", "ipw2100-1.3-i.fw"},
29	{"ipw_monitor", "ipw2100-1.3-p.fw"}
30});
31
32
33int
34HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
35{
36	struct ipw_softc* sc = (struct ipw_softc*)device_get_softc(dev);
37	uint32 r;
38
39	r = CSR_READ_4(sc, IPW_CSR_INTR);
40	if (r  == 0 || r == 0xffffffff)
41		return 0;
42
43	atomic_set((int32*)&sc->sc_intr_status, r);
44
45	CSR_WRITE_4(sc, IPW_CSR_INTR_MASK, 0);
46		// disable interrupts
47	return 1;
48}
49