summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Sayer <nsayer@FreeBSD.org>2001-08-24 02:14:26 +0000
committerNick Sayer <nsayer@FreeBSD.org>2001-08-24 02:14:26 +0000
commitfa081a357e3e6f778d19b5c01ee896bdec2aa068 (patch)
treefb4538e1bed2eaf23df04331b167e8b8acf6ffc4
parent670f6b2fc61fb1ac50c2e6877b434de5f90abd41 (diff)
Notes
-rw-r--r--sys/dev/wi/if_wi.c14
-rw-r--r--sys/dev/wi/if_wireg.h11
2 files changed, 23 insertions, 2 deletions
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c
index 4c10c10c2129..f741a8b628e2 100644
--- a/sys/dev/wi/if_wi.c
+++ b/sys/dev/wi/if_wi.c
@@ -381,6 +381,20 @@ wi_pci_attach(device_t dev)
CSR_WRITE_2(sc, WI_INT_EN, 0);
CSR_WRITE_2(sc, WI_EVENT_ACK, 0xFFFF);
+ /* We have to do a magic PLX poke to enable interrupts */
+ sc->local_rid = WI_PCI_LOCALRES;
+ sc->local = bus_alloc_resource(dev, SYS_RES_IOPORT,
+ &sc->local_rid, 0, ~0, 1, RF_ACTIVE);
+ sc->wi_localtag = rman_get_bustag(sc->local);
+ sc->wi_localhandle = rman_get_bushandle(sc->local);
+ command = bus_space_read_4(sc->wi_localtag, sc->wi_localhandle,
+ WI_LOCAL_INTCSR);
+ command |= WI_LOCAL_INTEN;
+ bus_space_write_4(sc->wi_localtag, sc->wi_localhandle,
+ WI_LOCAL_INTCSR, command);
+ bus_release_resource(dev, SYS_RES_IOPORT, sc->local_rid, sc->local);
+ sc->local = NULL;
+
sc->mem_rid = WI_PCI_MEMRES;
sc->mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->mem_rid,
0, ~0, 1, RF_ACTIVE);
diff --git a/sys/dev/wi/if_wireg.h b/sys/dev/wi/if_wireg.h
index 0fa1c0c9d110..7602f69e89d2 100644
--- a/sys/dev/wi/if_wireg.h
+++ b/sys/dev/wi/if_wireg.h
@@ -89,12 +89,16 @@ struct wi_softc {
struct ifmedia ifmedia;
device_t dev;
int wi_unit;
+ struct resource * local;
+ int local_rid;
struct resource * iobase;
int iobase_rid;
struct resource * irq;
int irq_rid;
struct resource * mem;
int mem_rid;
+ bus_space_handle_t wi_localhandle;
+ bus_space_tag_t wi_localtag;
bus_space_handle_t wi_bhandle;
bus_space_tag_t wi_btag;
bus_space_handle_t wi_bmemhandle;
@@ -146,9 +150,12 @@ struct wi_softc {
#define WI_PORT4 4
#define WI_PORT5 5
-#define WI_PCI_MEMRES 0x18
-#define WI_PCI_IORES 0x1C
+#define WI_PCI_LOCALRES 0x14 /* The PLX chip's local registers */
+#define WI_PCI_MEMRES 0x18 /* The PCCard's attribute memory */
+#define WI_PCI_IORES 0x1C /* The PCCard's I/O space */
+#define WI_LOCAL_INTCSR 0x4c
+#define WI_LOCAL_INTEN 0x40
#define WI_HFA384X_SWSUPPORT0_OFF 0x28
#define WI_PRISM2STA_MAGIC 0x4A2D