aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/iwi
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2013-12-29 23:05:01 +0000
committerMarius Strobl <marius@FreeBSD.org>2013-12-29 23:05:01 +0000
commit0a9d883977a1facdbfa4021b042a19c8a55c6655 (patch)
tree8c6b4775a4c66f1ff035c390648a8b417e30d7f4 /sys/dev/iwi
parent66168a0428361c1a4ffcf7b8b18cee3a1b0996c7 (diff)
Notes
Diffstat (limited to 'sys/dev/iwi')
-rw-r--r--sys/dev/iwi/if_iwi.c32
-rw-r--r--sys/dev/iwi/if_iwivar.h2
2 files changed, 12 insertions, 22 deletions
diff --git a/sys/dev/iwi/if_iwi.c b/sys/dev/iwi/if_iwi.c
index 32940d1952d3..9373c2feac35 100644
--- a/sys/dev/iwi/if_iwi.c
+++ b/sys/dev/iwi/if_iwi.c
@@ -220,7 +220,7 @@ static device_method_t iwi_methods[] = {
DEVMETHOD(device_suspend, iwi_suspend),
DEVMETHOD(device_resume, iwi_resume),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t iwi_driver = {
@@ -231,7 +231,7 @@ static driver_t iwi_driver = {
static devclass_t iwi_devclass;
-DRIVER_MODULE(iwi, pci, iwi_driver, iwi_devclass, 0, 0);
+DRIVER_MODULE(iwi, pci, iwi_driver, iwi_devclass, NULL, NULL);
MODULE_VERSION(iwi, 1);
@@ -258,15 +258,12 @@ iwi_probe(device_t dev)
if (pci_get_vendor(dev) == ident->vendor &&
pci_get_device(dev) == ident->device) {
device_set_desc(dev, ident->name);
- return 0;
+ return (BUS_PROBE_DEFAULT);
}
}
return ENXIO;
}
-/* Base Address Register */
-#define IWI_PCI_BAR0 0x10
-
static int
iwi_attach(device_t dev)
{
@@ -301,20 +298,13 @@ iwi_attach(device_t dev)
callout_init_mtx(&sc->sc_wdtimer, &sc->sc_mtx, 0);
callout_init_mtx(&sc->sc_rftimer, &sc->sc_mtx, 0);
- if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) {
- device_printf(dev, "chip is in D%d power mode "
- "-- setting to D0\n", pci_get_powerstate(dev));
- pci_set_powerstate(dev, PCI_POWERSTATE_D0);
- }
-
pci_write_config(dev, 0x41, 0, 1);
/* enable bus-mastering */
pci_enable_busmaster(dev);
- sc->mem_rid = IWI_PCI_BAR0;
- sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->mem_rid,
- RF_ACTIVE);
+ i = PCIR_BAR(0);
+ sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &i, RF_ACTIVE);
if (sc->mem == NULL) {
device_printf(dev, "could not allocate memory resource\n");
goto fail;
@@ -323,8 +313,8 @@ iwi_attach(device_t dev)
sc->sc_st = rman_get_bustag(sc->mem);
sc->sc_sh = rman_get_bushandle(sc->mem);
- sc->irq_rid = 0;
- sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irq_rid,
+ i = 0;
+ sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &i,
RF_ACTIVE | RF_SHAREABLE);
if (sc->irq == NULL) {
device_printf(dev, "could not allocate interrupt resource\n");
@@ -460,6 +450,8 @@ iwi_detach(device_t dev)
struct ifnet *ifp = sc->sc_ifp;
struct ieee80211com *ic = ifp->if_l2com;
+ bus_teardown_intr(dev, sc->irq, sc->sc_ih);
+
/* NB: do early to drain any pending tasks */
ieee80211_draintask(ic, &sc->sc_radiontask);
ieee80211_draintask(ic, &sc->sc_radiofftask);
@@ -481,10 +473,10 @@ iwi_detach(device_t dev)
iwi_free_tx_ring(sc, &sc->txq[3]);
iwi_free_rx_ring(sc, &sc->rxq);
- bus_teardown_intr(dev, sc->irq, sc->sc_ih);
- bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, sc->irq);
+ bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(sc->irq), sc->irq);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mem_rid, sc->mem);
+ bus_release_resource(dev, SYS_RES_MEMORY, rman_get_rid(sc->mem),
+ sc->mem);
delete_unrhdr(sc->sc_unr);
diff --git a/sys/dev/iwi/if_iwivar.h b/sys/dev/iwi/if_iwivar.h
index 17336772c722..42ca92ea282c 100644
--- a/sys/dev/iwi/if_iwivar.h
+++ b/sys/dev/iwi/if_iwivar.h
@@ -153,8 +153,6 @@ struct iwi_softc {
bus_space_tag_t sc_st;
bus_space_handle_t sc_sh;
void *sc_ih;
- int mem_rid;
- int irq_rid;
/*
* The card needs external firmware images to work, which is made of a